Как получить доступ к HardwarePropertiesManager на Android Things

У меня установлен raspberry pi с предварительным просмотром для разработчиков Android.

Я хотел бы следить за температурой процессора и использованием самой малины.

Мой подход состоял в том, чтобы использовать HardwarePropertiesManager следующим образом:

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

Для этого вызова требуются разрешения владельца устройства или владельца профиля (или vr).

Я никогда не использовал владельца устройства, поэтому я следовал объяснениям по этим ссылкам:

Пример режима киоска Android

Команда DPM оболочки Android

Но я получаю следующую ошибку в оболочке adb:

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)

Вот мой манифест:

<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>

Кто-нибудь сталкивался с этой ошибкой в ​​прошлом, может дать мне подсказку, где мне нужно искать ошибку. Возможно, мой подход также неверен, и я могу получить измерения ЦП более простым способом.


person TyrManuZ    schedule 19.02.2017    source источник
comment
Отправьте отчет об ошибке, связанный с получением необходимых разрешений для использования этого API: code.google.com/p/android/issues/   -  person devunwired    schedule 20.02.2017
comment
Привет, ты решил это?   -  person David Vávra    schedule 29.05.2017
comment
то же самое. Вы узнали, почему?   -  person wverdese    schedule 29.04.2018


Ответы (1)


Измените фильтр намерений на этот

<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>
person Ali Bagheri    schedule 25.03.2017