Как / Где я могу получить доступ к функции Android «Переключить звук» (вибрация, беззвучный, обычный)? - PullRequest
0 голосов
/ 01 февраля 2012

Я использую приложение, которое называется BetterCut (то же, что AnyCut).

В этом приложении я могу создавать ярлыки из действий, системных переключателей (но переключение вибрации не в предложениях), ...

У меня также есть возможность создать свой собственный ярлык, используя три значения: Action, Data и Type. Дело в том, что я не знаю, где получить доступ к переключателю режима звука с моего устройства Android ...

Кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 02 сентября 2012

Если вам нужно перейти в обычный режим и бесшумный режим с вибрацией: вот код:

   package com.example.silent.mode.toggle;
   import android.os.Bundle;\
   import android.app.Activity;
   import android.widget.ImageView;
   import android.util.Log;
   import android.view.View;
   import android.graphics.drawable.Drawable;
   import android.media.AudioManager;
   import android.widget.Button;

  public class MainActivity extends Activity {

private AudioManager mAudioManager;
private boolean mPhoneIsSilent;
 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    super.onCreate(savedInstanceState);
    mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
    checkIfPhoneIsSilent();
    setButtonClickListener();
    Log.d("SilentModeApp", "This is a test");

}    


    private void setButtonClickListener() {
    Button toggleButton = (Button)findViewById(R.id.silent);
    toggleButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

        if (mPhoneIsSilent) {
            //change back to normal mode
            mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
            mPhoneIsSilent = false;
        }
            else
            {
                //change to silent mode - This Changes to Vibration


         mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
                mPhoneIsSilent = true;
            }
        // Now toggle the UI again
        toggleUi(); 
        }
        });
}
    private void checkIfPhoneIsSilent() {
        int ringermode = mAudioManager.getRingerMode();
        if (ringermode == AudioManager.RINGER_MODE_SILENT) {
            mPhoneIsSilent = true;
        }
        else
        {
            mPhoneIsSilent = false;
        }
    }
    private void toggleUi() {
        ImageView imageView = (ImageView) findViewById(R.id.phone_icon);
        Drawable newPhoneImage;
        if (mPhoneIsSilent){
            newPhoneImage = 
            getResources().getDrawable(R.drawable.phone_silent);
    }
    else
    {
        newPhoneImage = 
                getResources().getDrawable(R.drawable.phone_on);

    }
        imageView.setImageDrawable(newPhoneImage);

}
     @Override      
     protected void onResume() {
 super.onResume();
 checkIfPhoneIsSilent();
 toggleUi();

     }
   }
0 голосов
/ 01 февраля 2012

вы можете сделать так, чтобы звук отключался в ярком режиме, и наоборот

AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
if(isSilent){
    audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}else{
    audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
    audioManager.setStreamVolume(AudioManager.STREAM_RING, maxVolume, AudioManager.FLAG_PLAY_SOUND);
}

вам нужно хранить флаг где-то, в котором сохранено значение, или вы можете получить режим звонка этим audioManager.getRingerMode()

...