我正在尝试做这个简单的应用程序,允许手机响铃,但在Android 4(ICS)下接收通知时不发出声音。为此,我将响铃/通知流设置为0(静音)。接听电话时,我将铃声音量设置为max(p.e.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开始。那么,有没有办法重新启动铃声?有人可以帮帮我吗?感谢。
答案 0 :(得分:0)
我必须说你应该尝试给你的广播接收器高度优先。这可以像下面这样做
<intent-filter android:priority="1000">
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
参考链接&gt;&gt; Highest priority
它可以/可以解决您的问题。