2012-11-05 5 views
0

Я пытаюсь играть некоторые тон, когда мое приложение в фоновом режиме, и я нажимаю на «камеры» кнопка, что я делаю это простые шаги.BroadcastReceiver не получают нажатие на кнопку камеры

  1. Создание BroadcastReceiver класса

    public class CameraButtonListener extends BroadcastReceiver { 
        @Override 
        public void onReceive(Context context, Intent intent) { 
         ToneGenerator tone = new ToneGenerator(AudioManager.STREAM_DTMF, 100); 
         tone.startTone(0,2000); 
         abortBroadcast(); 
        } 
    } 
    
  2. Регистрация BrodcastReceiver в onCreate Methode.

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    
        MediaButtonBrodcastReceiver receiver = new MediaButtonBrodcastReceiver();   
        IntentFilter filter = new IntentFilter(Intent.ACTION_CAMERA_BUTTON); 
        filter.setPriority(25645895); 
        registerReceiver(receiver,filter);  
    } 
    
  3. Добавление приемника brodcast в манифест андроида.

    <receiver android:enabled="true" android:exported="true" android:name=".CameraButtonListener"> 
    <intent-filter android:priority="25645895"> 
        <action android:name="android.intent.action.CAMERA_BUTTON" /> 
        <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
    

После я запускаю мое приложение, а затем нажмите кнопку меню и приложение переходит на задний план, после того, как я нажимаю на кнопку камеры, и ничего не heppens, открывается только приложение камеры. Может быть, я что-то делаю неправильно или что-то пропустил?

Я использую телефон Sony Ericsson XPeria Arc с Android 2.3.4 версии ОС.

+0

Вы пытались поставить приемник на службу? Мероприятия не живут долго в фоновом режиме, вы не можете ожидать, что он получит сигналы, если у него больше нет переднего плана ... – Joel

+0

@Joel no Как я могу это сделать? –

+0

@Joel Я прочитал несколько сообщений, которые люди делали что-то вроде этого, и этот код работает хорошо, я хочу использовать Сервис в конце, если в работе не было никакого способа сделать это. –

ответ

1

Избавьтесь от элемента <category> в вашем элементе <receiver>, если вы используете шаг № 3. Эта трансляция, вероятно, не имеет категории - вы обычно видите только категории по Intent объектам, используемым для startActivity().

Обратите внимание, что ваш шаг №2 не определяет категорию с ее IntentFilter, что хорошо.

+0

@CommonWare Я думаю, что мой телефон не поддерживает кнопку камеры, поэтому я включаю кнопку громкости и ее работу, еще один вопрос. Могу ли я получать громкость вниз и вверх, когда телефон спит? Большое спасибо !!! ты лучший !!! –

+0

вот мой вопрос. http://stackoverflow.com/questions/13248826/receive-volume-key-press-events-when-phone-is-in-deep-sleep –

0

Здесь, прочитайте на Android Services. Службы используются, если вы хотите, чтобы ваше приложение выполняло задачи в фоновом режиме. В этом случае вы хотите знать, когда что-то произойдет, даже если ваше приложение в настоящее время не находится на переднем плане. Вот как это делается.

+0

И как вы думаете, это поможет мне? или работать в моем случае? –

+0

Вам нужно будет сделать это, если вы хотите получать уведомления, когда ваше приложение находится в фоновом режиме. – Joel

Смежные вопросы