android - 如何在 Android Things 上访问 HardwarePropertiesManager

标签 android adb android-permissions android-things device-owner

我在树莓派上安装了 android things developer preview。

我想监控树莓派本身的 CPU 温度和使用情况。

我的方法是像这样使用 HardwarePropertiesManager:

HardwarePropertiesManager hardware = (HardwarePropertiesManager) getSystemService(Context.HARDWARE_PROPERTIES_SERVICE);
float[] cpuTemperature = hardware.getDeviceTemperatures(HardwarePropertiesManager.DEVICE_TEMPERATURE_CPU, HardwarePropertiesManager.TEMPERATURE_CURRENT);

此调用需要设备所有者或配置文件所有者权限(或 vr)。

我从未使用过设备所有者,所以我遵循了这些链接上的解释:

Android Kiosk Mode Example

Android Shell Command DPM

但我在 adb shell 中收到以下错误:

java.lang.RuntimeException: Can't set package ComponentInfo{com.myexample.androidthings/com.myexample.androidthings.BasicDeviceAdminReceiver} as device owner.
at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:149)
at com.android.commands.dpm.Dpm.onRun(Dpm.java:96)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
at com.android.commands.dpm.Dpm.main(Dpm.java:41)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)

这是我的 list :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myexample.androidthings.service">

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<application
    android:allowBackup="true"
    android:icon="@android:drawable/sym_def_app_icon"
    android:label="@string/app_name">

    <uses-library android:name="com.google.android.things"/>

    <activity android:name="com.myexample.androidthings.MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <!-- Launch activity automatically on boot -->
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.IOT_LAUNCHER"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>

    <service android:name="org.eclipse.paho.android.service.MqttService"></service>

    <receiver
        android:name="com.myexample.androidthings.BasicDeviceAdminReceiver"
        android:permission="android.permission.BIND_DEVICE_ADMIN" >
        <meta-data
            android:name="android.app.device_admin"
            android:resource="@xml/device_policies"/>

        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED" />
            <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" />
        </intent-filter>
    </receiver>
</application>
</manifest>

过去是否有人遇到过此错误,可以给我提示我需要在哪里查找错误。 也许我的方法也不正确,我可以通过更简单的方式获得 CPU 测量值。

最佳答案

将 intent-filter 改成这个

<intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
                <action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLE_REQUESTED" />
                <action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLED" />
            </intent-filter>

关于android - 如何在 Android Things 上访问 HardwarePropertiesManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330098/

相关文章:

android - 切换 Android 设备数据连接

java - 为什么我的应用程序显示两个 requestPermission Rationales?

android - "com.android.vending.BILLING"和 "android.permission.BILLING"之间的区别

android kotlin java.io.FileNotFoundException :/storage/emulated/0/number. txt:打开失败:EACCES(权限被拒绝)

更改 fragment 后隐藏的Android FAB HideBottomViewOnScrollBehavior statys

android - 如何增加 android chronometer 的文字大小?

android - StartActivityForResult() 可能崩溃?

macOS 中的 Android Studio 在点击 'run' 后无法识别物理设备

android - adb 无法在 bash 中使用变量

java - 如何将Java库源分成两 block ,保留一个包?