![](/img/trans.png)
[英]Is there any way to send audio to small speaker which is used in calls in android?
[英]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.