我正在尝试做这个简单的应用程序,它允许手机在接收 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);
}
}
}
}
问题是它有时有效,有时无效。我找不到理由。我给自己打了十次电话,铃声可能是 6 次。其他 4 次被静音。奇怪的??
我知道我的应用程序可能需要“太长时间”才能将 setStreamVolume 调用为 7,所以这可能是有时会准时(和声音)有时为时已晚(所以它不响)的方式,因为调用已经以 0 开始体积。那么,有没有办法重启铃声呢?有人可以帮我吗?谢谢。