2011-09-06 38 views
20

Mục tiêu của tôi là để hỗ trợ 2 hoạt động:câm Android điện thoại/bật âm

  • điện thoại câm (có thể với rung động bật/tắt), vì vậy khi một cuộc gọi hoặc sms nhận được nó sẽ không gây tiếng ồn

  • điện thoại bật âm thanh và khôi phục lại khối lượng cho nhà nước trước khi tắt tiếng điện thoại

làm thế nào tôi có thể làm điều này? Yêu cầu quyền nào trong AndroidManifest?

Trả lời

36

Đây là phép rung vào file manifest

<uses-permission android:name="android.permission.VIBRATE" /> 

này là dành cho đặt thiết bị ở chế độ im lặng với rung

AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); 

này là dành cho để đưa vào chế độ đổ chuông

AudioManager 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_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); 
+0

Cảm ơn bạn, hoạt động tốt –

+0

Hey Pratik, phương thức nào được gọi khi nhận được cuộc gọi điện thoại. Tôi nên đặt mã của bạn ở đâu? Cảm ơn! –

+0

@Rich Bạn cần đưa ứng dụng vào bất cứ nơi nào bạn muốn giống như tùy chọn Âm thanh mặc định trên màn hình Cài đặt và bạn có thể tạo giống như cách này hoặc bằng cách đơn giản chỉ cung cấp tùy chọn với tùy chọn chuyển đổi hoặc hộp kiểm thông qua quản lý – Pratik

17
public void changeRingerMode(Context context){ 

AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 

    /** 
    * To Enable silent mode..... 
    */ 
    audio.setRingerMode(AudioManager.RINGER_MODE_SILENT); 

    /** 
    * To Enable Ringer mode..... 
    */ 
    audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 

} 
+1

Cảm ơn bạn, tôi ước tôi có thể chấp nhận cả hai câu trả lời –

0

Nếu những gì bạn muốn là tắt âm thanh và khôi phục cài đặt âm thanh về trạng thái trước đó, điều này làm việc cho tôi.

static int ringstate = 0; 
private void soundOn(boolean off){ 
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
    if(off) 
    { //turn off ringing/sound 
    //get the current ringer mode 
    ringstate = audio.getRingerMode(); 
    if(ringstate!=AudioManager.RINGER_MODE_SILENT) 
     audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);//turn off 
    } 
    else 
    { 
    //restore previous state 
    audio.setRingerMode(ringstate); 


    } 

} 

Điều này nên thực hiện.

Các vấn đề liên quan