2012-11-19 78 views
0

我想接收正在打開的相機的廣播。如果某些條件成立,我想阻止該進程。應用程序未接收正在打開的相機的廣播

我沒有得到相機被打開的廣播。 (我可以播放新的圖像拍攝,這不是我想要的。)

這是我的一塊manifest文件:

<receiver 
      android:name=".HardwareActionListener" 
      android:enabled="true" 
      android:exported="true" > 
      <intent-filter android:priority="1000" > 
       <action android:name="android.intent.action.CAMERA_BUTTON" > 
       </action> 
      </intent-filter> 
</receiver> 

這是我的一塊文件HardwareActionListener.java

System.out.println("Intent action: " + intent.getAction()); 

if (intent.getAction().equalsIgnoreCase(
       "android.intent.action.CAMERA_BUTTON")) { 
      System.out.println("CAMERA Button broadcast received and aborted"); 
      if(some_condition_true) 
        abortBroadcast(); 
     } 

我在谷歌和stackverflow上搜索了一整天。我嘗試了每一種組合。 但是我沒有得到相機被打開的廣播。

我正在使用Samsung Galaxy Tab進行測試。沒有硬件攝像頭按鈕。

而在this question一個答案說

您不能:意圖僅由硬件相機按鈕產生, 不是由相機應用中的按鈕。

那麼我的清單文件的意圖過濾器有什麼問題嗎?還是由於設備沒有硬件攝像頭按鈕而導致問題?

+0

您的意思是說,您希望在默認相機應用程序打開時收到通知?或者當任何應用程序嘗試訪問攝像頭預覽?在任何情況下,「android.intent.action.CAMERA_BUTTON」的名稱都很清楚:當按下物理照相機按鈕時(如果有),您會收到通知 – fiddler

+0

當用戶嘗試打開照相機時。 –

+0

攝像頭有很多種方式可以「打開」。當任何應用程序顯示相機預覽時,我不認爲可以通知您。 – fiddler

回答

3

我想接收正在打開的相機的廣播。

沒有這樣的廣播。

如果某些條件爲真,我想阻止該進程。

請使用設備管理API來控制對相機的訪問。

這是我的一塊清單文件的

您現在收聽的CAMERA按鍵操作,這可能會或可能不會有什麼用相機應用,並不能在所有設備上存在。

但是我沒有得到相機被打開的廣播。

那是因爲沒有這樣的廣播。

在這個問題中的一個答案說:「你不能:意圖只是由硬件攝像頭按鈕生成,而不是由相機應用程序中的按鈕生成。

該答案正確。

+0

謝謝。能夠使用Device Policy Manager進行設置 –

相關問題