簡體   English   中英

是否有可用於撥打電話的API?

[英]Is there any API which can be used to make phone calls?

我需要為Android手機創建一個應用程序,以通過/不通過用戶互動進行通話。 我從net和Stack Overflow( 如何在不使用intent的情況下進行調用 )中了解到無法完成此操作。

但是現在,我想知道是否有一些API可以用來開發網站,我將從Android手機啟動該網站,然后網絡服務會進行呼叫。

我沒有網絡開發背景。 因此,我想確認是否可能? 也就是說,是否有可能我提供網站電話號碼並撥打電話,賬單轉到提供的號碼(就像從他/她的電話打來的電話,賬單轉到他/她的電話號碼一樣。但是現在我不想Android應用程序進行呼叫。我希望自己的Web應用程序或Java應用程序進行呼叫),但我不想使用其他服務提供商。

如果您的服務將成為您應用程序的一部分,那么您會使它變得比所需的更加復雜。 由於您有一個從RESTful Web服務獲取一些數據的簡單用例,因此應研究ResultReceiver和IntentService。

當您要執行某些操作時,此Service + ResultReceiver模式通過使用startService()啟動或綁定到該服務來工作。 您可以指定要執行的操作,並通過Intent中的其他函數傳入ResultReceiver(活動)。

在服務中,您實現onHandleIntent來執行Intent中指定的操作。 操作完成后,您可以使用傳入的ResultReceiver將消息發送回Activity,這時將調用onReceiveResult。

因此,例如,您想從Web服務中提取一些數據。

-創建意圖並調用startService。

-服務中的操作開始,並向活動發送一條消息,說明活動已開始

-活動處理消息並顯示進度。

-服務完成操作並將一些數據發送回您的活動。

-您的活動處理數據並放入列表視圖

-該服務會向您發送一條消息,說明已完成,並且會殺死自己。

-活動獲取完成消息並隱藏進度對話框。

例如:

活動:

public class HomeActivity extends Activity implements MyResultReceiver.Receiver {

    public MyResultReceiver mReceiver;

    public void onCreate(Bundle savedInstanceState) {
        mReceiver = new MyResultReceiver(new Handler());
        mReceiver.setReceiver(this);
        ...
        final Intent intent = new Intent(Intent.ACTION_SYNC, null, this, QueryService.class);
        intent.putExtra("receiver", mReceiver);
        intent.putExtra("command", "query");
        startService(intent);
    }

    public void onPause() {
        mReceiver.setReceiver(null); // clear receiver so no leaks.
    }

    public void onReceiveResult(int resultCode, Bundle resultData) {
        switch (resultCode) {
        case RUNNING:
            //show progress
            break;
        case FINISHED:
            List results = resultData.getParcelableList("results");
            // do something interesting
            // hide progress
            break;
        case ERROR:
            // handle the error;
            break;
    }
}

服務:

public class QueryService extends IntentService {
    protected void onHandleIntent(Intent intent) {
        final ResultReceiver receiver = intent.getParcelableExtra("receiver");
        String command = intent.getStringExtra("command");
        Bundle b = new Bundle();
        if(command.equals("query") {
            receiver.send(STATUS_RUNNING, Bundle.EMPTY);
            try {
                // get some data or something           
                b.putParcelableArrayList("results", results);
                receiver.send(STATUS_FINISHED, b)
            } catch(Exception e) {
                b.putString(Intent.EXTRA_TEXT, e.toString());
                receiver.send(STATUS_ERROR, b);
            }    
        }
        this.stopSelf();
    }
}

ResultReceiver:

public MyResultReceiver extends ResultReceiver {
    private Receiver mReceiver;

    public MyResultReceiver(Handler handler) {
        super(handler);
    }

    public void setReceiver(Receiver receiver) {
        mReceiver = receiver;
    }

    public interface Receiver {
        public void onReceiveResult(int resultCode, Bundle resultData);
    }

    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
        if (mReceiver != null) {
            mReceiver.onReceiveResult(resultCode, resultData);
        }
    }
}

嘗試http://phono.com/ 它提供了各種電話API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM