私は、Android 4 (ICS) で通知を受信したときに電話を鳴らすことができるが、音を鳴らさないこの単純なアプリを実行しようとしています。そのために、リング/通知ストリームを 0 (ミュート) に設定しました。電話を受けるときは、着信音量を最大 (pe 7) に設定し、アイドル状態になったら 0 (ミュート) に戻します。
そのために、この単純なコードを使用します。
public class ReceiverClass extends BroadcastReceiver
{
@Override public void onReceive(Context context, Intent intent)
{
if ("android.intent.action.PHONE_STATE".equals(intent.getAction()))
{ String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
AudioManager amanager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (TelephonyManager.EXTRA_STATE_IDLE.equals(state))
{ amanager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
}
else if (TelephonyManager.EXTRA_STATE_RINGING.equals(state))
{ amanager.setStreamVolume(AudioManager.STREAM_RING, 7, 0);
}
}
}
}
問題は、それが機能する場合と機能しない場合があることです。理由が見つかりません。私は10回自分に電話をかけ、呼び出し音はおそらく6回鳴ります。残りの4回はミュートされていました。変??
アプリケーションが setStreamVolume を 7 に呼び出すのに「時間がかかりすぎる」可能性があることを理解しているので、呼び出しがすでに 0 で開始されているため、時間通りに取得する (そして音が鳴る) 場合もあれば、遅すぎる (音が鳴らない) 場合もあります。音量。それで、呼び出し音を再開する方法はありますか?誰でもこれで私を助けることができますか?ありがとう。