Доступ к режиму звонка не работает внутри службы - PullRequest
2 голосов
/ 09 июля 2010

У меня есть приложение, которое создает уведомление со звуком при поступлении определенного текста. Для этого я определяю текущий режим ringerMode, изменяю режим ringerMode на нормальный, воспроизводю звук, а затем быстро возвращаю звонок в исходное состояние.установка.Вот код:

public static AudioManager audio;

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

ringMode = audio.getRingerMode();
        if (ringMode < 2)
        //Checks to see if the phones ringer is set to silent, or vibrate
            audio.setRingerMode(2);

        //vibrates phone in a pattern
        long[] pattern = {0, 25};
        //long[] pattern = {0, 1000, 100, 100, 100, 100, 100, 1000}; 
        v.vibrate(pattern, -1); 
        final int HELLO_ID = 1;
        mNotificationManager.notify(HELLO_ID, notification);

        //delays return back to original volume so notification can be heard
        Handler handler = new Handler();  
        handler.postDelayed(new Runnable() {  
             public void run() {  
                 audio.setRingerMode(ringMode); 
             }  
        }, 4000);
        }

Это прекрасно работает в деятельности, но не в этой службе уведомлений, и в настоящее время размещается в методе onStart.Использование-разрешение android: name = "android.permission.MODIFY_AUDIO_SETTINGS" также было добавлено в манифест.Есть идеи?Спасибо

1 Ответ

0 голосов
/ 09 июля 2010

Не совсем решение этой проблемы, но я понял, что существует поток томов уведомлений, который я должен был настроить С почти точно таким же кодом класс Notify теперь работает правильно.

if (startSound)
        {   
            //This sound plays using the ringer volume
            //notification.sound = Uri.parse("android.resource://itp.uts.program/" + R.raw.pager);

            //Sets ringer temporarily to active, so notification is heard
            audio.setStreamVolume(5, 3, 0); 

            //vibrates phone in a pattern
            long[] pattern = {0, 25};
            //long[] pattern = {0, 1000, 100, 100, 100, 100, 100, 1000}; 
            v.vibrate(pattern, -1); 
        }
        //Creates the notification
        mNotificationManager.notify(HELLO_ID, notification);

        if (startSound)
        {
        //delays return back to original volume so notification can be heard
        Handler handler = new Handler();  
        handler.postDelayed(new Runnable() {  
             public void run() {  
                 audio.setStreamVolume(5, streamVolume, 0); 
             }  
        }, 7000);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...