如何通过audiopipe理器将振动模式更改为铃声

我正在申请电话模式将从静音模式更改为振铃模式,如果用户发送短信与一些特定的关键字。 该应用程序主要用于当用户在室内某个地方丢失了自己的单元并处于静音模式时。 我的主要问题是如何通过audiopipe理器改变手机模式?

使用AudioManager将“静音”模式设置为“正常”模式

 AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); switch (am.getRingerMode()) { case AudioManager.RINGER_MODE_SILENT: Log.i("MyApp","Silent mode"); am.setRingerMode(AudioManager.RINGER_MODE_NORMAL); break; } 

尝试这个:

 AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
 AudioManager manager = (AudioManager) getContext().getSystemService(AUDIO_SERVICE); manager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 

为了使它适用于棉花糖(API 23)以上的Android设备,

  1. AndroidManifest.xml定义了ACCESS_NOTIFICATION_POLICY权限

     <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/> 
  2. 在您的onResume/onCreate函数中,如果没有授予,请求权限

     @Override protected void onResume() { super.onResume(); NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //Check if the phone is running Marshmallow or above if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) { //If the permission is not granted, launch an inbuilt activity to grant permission if (!nm.isNotificationPolicyAccessGranted()) { startActivity(new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS)); } } } 
  3. 最后改变林格模式调用这个方法

     public void setRingerMode(Context context,int mode){ /* * mode variable value can be: * AudioManager.RINGER_MODE_SILENT * AudioManager.RINGER_MODE_NORMAL * AudioManager.RINGER_MODE_VIBRATE */ NotificationManager nm = (NotificationManager)context.getSystemService(NOTIFICATION_SERVICE); AudioManager audioManager = (AudioManager)context.getSystemService(AUDIO_SERVICE); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M && nm.isNotificationPolicyAccessGranted()) audioManager.setRingerMode(mode); }