android.intent.action.CAMERA_BUTTON 未在 Desire Z (Froyo) 上广播?

发布于 2024-11-25 10:32:45 字数 1631 浏览 0 评论 0原文

我很难拦截 Desire Z (Froyo) 上的硬件相机按钮。我编写了一个在 G1 (1.6) 上运行良好的示例,但在上述手机上运行不佳。

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.company" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".CameraReceiverTestActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:enabled="true" android:exported="true"
        android:name=".CameraButtonReceiver">
        <intent-filter android:priority="999">
            <action android:name="android.intent.action.CAMERA_BUTTON" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
</application>
</manifest>

和 CameraButtonReceiver.java

package net.company;

public class CameraButtonReceiver extends BroadcastReceiver {
  static {
    Log.w("CBR", "onReceive clazz init");
  }

  @Override
  public void onReceive(Context context, Intent intent) {
      Log.w("CBR", "onReceive camera");
      abortBroadcast();
  }
}

在 G1 (1.6) 上,只要按下相机按钮并且默认相机应用程序被抑制,我就会看到两条消息。然而,在《Desire Z》(Froyo)中却没有发生这样的事情。在使用优先级、代码/xml 声明之后,我敢说这部手机以其他名称发送此广播。

I have hard time intercepting HW camera button on Desire Z (Froyo). I wrote a sample that runs fine on G1 (1.6) but not on aforementioned phone.

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.company" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".CameraReceiverTestActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:enabled="true" android:exported="true"
        android:name=".CameraButtonReceiver">
        <intent-filter android:priority="999">
            <action android:name="android.intent.action.CAMERA_BUTTON" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
</application>
</manifest>

And CameraButtonReceiver.java

package net.company;

public class CameraButtonReceiver extends BroadcastReceiver {
  static {
    Log.w("CBR", "onReceive clazz init");
  }

  @Override
  public void onReceive(Context context, Intent intent) {
      Log.w("CBR", "onReceive camera");
      abortBroadcast();
  }
}

On G1 (1.6) I see both messages as soon as press the camera button and default camera app is suppressed. However, on Desire Z (Froyo) no such thing happens. After playing with priority, code/xml declarations I dare to say this phone sends this broadcast with some other name.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

再见回来 2024-12-02 10:32:45

根据我对兼容性定义文档的阅读,设备制造商不需要在单击“相机”按钮时发送任何广播。它可能仅由 Desire Z 上的前台活动使用。我没有 Z,因此无法确认您的测试。

由于绝大多数 Android 设备根本没有 CAMERA 按钮,因此您需要确保您的应用程序在没有此类按钮的情况下也能正常运行,并且您建议用户 CAMERA 按钮可能会或可能不会与您的应用程序一起使用,具体取决于设备。

There is no requirement for a device manufacturer to send any broadcast when the CAMERA button is clicked, from my reading of the Compatibility Definition Document. It might only be used by the foreground activity on the Desire Z. I don't have a Z and so cannot confirm your tests.

Since the vast majority of Android devices do not have a CAMERA button at all, you will need to ensure that your app works well without such a button, and that you advise users that the CAMERA button may or may not work with your app depending upon device.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文