2

我正在尝试做这个简单的应用程序,它允许手机在接收 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 开始体积。那么,有没有办法重启铃声呢?有人可以帮我吗?谢谢。

4

1 回答 1

0

我必须说你应该尝试给你的广播接收器高优先级。可以像下面这样完成

  <intent-filter android:priority="1000">
   <action android:name="android.intent.action.PHONE_STATE" />
 </intent-filter>     

参考链接>> 最高优先级

它可以/可能解决您的问题。

于 2012-06-30T18:20:54.913 回答