昔、作ったAndroidアプリを最近のSDKで単純にビルドしたら動かなかったので、調べ直している。
電話の着信とSMSの着信をする機能。
通話アプリを作成する
Androidの開発者向けドキュメント「通話アプリを作成する」を参考にしたら、「着信に応答する」の手順の1.に「アプリが通常のメカニズムを使用して新しい着信を受け取ります。」ここがわからない…
アプリが通常のメカニズムを使用して新しい着信を受け取ります。
通常のメカニズムがそもそもわからない。昔は着信用のBroadcastReceiverをManifestに書いておくと処理が飛んできたと思うんだけど…
調べたら、PhoneStateListenerをTelephoneManagerにlistenさせると、電話の状態が変わるたびにonCallStateChangedがコールされる。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 中略 phoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String phoneNumber) { super.onCallStateChanged(state, phoneNumber); switch (state) { case TelephonyManager.CALL_STATE_RINGING: tvResult.setText("RINGING from "+phoneNumber); break; case TelephonyManager.CALL_STATE_OFFHOOK: tvResult.setText("OFFHOOK from "+phoneNumber); break; case TelephonyManager.CALL_STATE_IDLE: tvResult.setText("IDLE from "+phoneNumber); break; } } }; TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); }