4

ユーザーが電話がリンガーモードからサイレントモードに移行するのか、サイレントモードに移行するのか、またはその逆に移行するのかをユーザーが確認できる、ブロードキャストレシーバーの実装が必要です。

int volumeValue = (Integer)intent.getExtras().get("android.media.EXTRA_VOLUME_STREAM_VALUE");

私はこのコードを試しましたが、リンガーからサイレント、サイレントからバイブレーション、またはその逆に同じ値を与えるため、あまり役に立ちません。電話がリンガーモードからサイレントになり、バイブレーションするためにサイレントになったら、実際にアクションをキャッチしたいです。よろしくお願いします。

4

1 に答える 1

9

次のコードをレシーバーのonCreate()メソッドに記述します。

 BroadcastReceiver receiver=new BroadcastReceiver(){
          @Override
          public void onReceive(Context context, Intent intent) {
               //code...
          }
      };
      IntentFilter filter=new IntentFilter(
                      AudioManager.RINGER_MODE_CHANGED_ACTION);
      registerReceiver(receiver,filter);

また、これをmainfestファイルに追加します。

<receiver android:name=".receivers.RingerModeStateChangeReceiver" >
        <intent-filter>
            <action android:name="android.media.RINGER_MODE_CHANGED" />
        </intent-filter>
    </receiver>
于 2012-09-24T11:15:44.643 に答える