Как сделать так, чтобы мой BroadcastReceiver блокировал трансляцию из системы? - PullRequest
1 голос
/ 05 мая 2011

Я пишу приложение для Android, где пользователь может делать снимки, и я использую собственную функцию камеры вместо встроенного в камеру программного обеспечения Android.Все работает отлично, за исключением того, что я хочу иметь возможность делать снимки, когда пользователь нажимает кнопку жесткой камеры.Я зарегистрировал широковещательный приемник, и он работает, но Android все еще открывает программу камеры поверх моего приложения.Есть ли способ заблокировать встроенное приложение от приема трансляции?

Я публикую свой код ниже.

Любая помощь будет принята с благодарностью.

Спасибо

  //Listen for camera button to be pressed
    cameraButtonListener = new BroadcastReceiver(){
        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals(Intent.ACTION_CAMERA_BUTTON)){
                Toast.makeText(getApplicationContext(), "Camera Button Pressed", Toast.LENGTH_SHORT).show();
            }
        }
    };
    //register broadcast receiver to listen for camera button
    getApplicationContext().registerReceiver(cameraButtonListener,new IntentFilter(Intent.ACTION_CAMERA_BUTTON) );

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Вы можете использовать abortBroadcast () в сочетании с android: приоритет , установленный на высокое значение, чтобы «потреблять» вещание.Тем не менее, это работает, только если трансляция является заказанной трансляцией, и я не знаю, какой тип ACTION_CAMERA_BUTTON.Подробнее здесь .

0 голосов
/ 05 мая 2011

попробуйте этот код

if("android.intent.action.ACTION_CAMERA_BUTTON".equals(intent.getAction()))

в регистре

 getApplicationContext().registerReceiver(cameraButtonListener,new IntentFilter(Intent.ACTION_CAMERA_BUTTON) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...