2

私は音楽関連のAndroidアプリケーションを開発しました。着信時にメディアプレーヤーを処理する際に問題が発生しました。電話中に音声を一時停止し、通話が終了した後に再開したいと思います。onstatechangedを指定してTelephonyManagerを使用してオーディオを一時停止および再開するかどうか(または)、着信中にアプリケーション自体を一時停止および再開する他の方法を提案する必要があります。

4

2 に答える 2

5

どうぞ

次の権限をマニフェストに含めます。

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

それで

PhoneStateListener phoneStateListener = new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        if (state == TelephonyManager.CALL_STATE_RINGING) {

        } else if(state == TelephonyManager.CALL_STATE_IDLE) {
           Play music
        } else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {
           Pause music
        }
        super.onCallStateChanged(state, incomingNumber);
    }
};


TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null) {
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}

そして、それを登録解除することにより、良いアンドロイド市民になりますonDestroy

if(mgr != null) {
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
}

ユーザーがCALL_STATE_OFFHOOK電話に出ると、電話がかかってきます。そこで、再生を一時停止するコードを記述できます。

于 2012-11-14T11:29:22.133 に答える
3

あなたの活動における使用onPause()と方法。onResume()着信が来ると、onPause()メソッドが呼び出されます。onResume()は、呼び出しが切断されたときに呼び出されます。

これは、ユーザーが他のアプリから送信された通知をクリックした場合でも機能します。

于 2012-11-14T11:25:02.687 に答える