android - HardwarePropertiesManager 不工作

标签 android cpu-usage android-sensors

我正在尝试使用 HardwarePropertiesManager ( https://developer.android.com/reference/android/os/HardwarePropertiesManager.html ) 访问信息。我正在使用带有以下代码的 Android 7.0(API 级别 24):

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView helloTV = findViewById(R.id.helloTV);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            HardwarePropertiesManager hardwarePropertiesManager = getApplicationContext().getSystemService(HardwarePropertiesManager.class);
            CpuUsageInfo[] cpuUsages = hardwarePropertiesManager.getCpuUsages();
            ///...

现在,当我的应用程序找到 hardwarePropertiesManager.getCpuUsages(); 行时,它会抛出以下异常:


java.lang.RuntimeException: Unable to start activity ComponentInfo{gr.serafeim.sensorplayground/gr.serafeim.sensorplayground.MainActivity}: java.lang.SecurityException: The caller is not a device or profile owner or bound VrListenerService.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6123)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
     Caused by: java.lang.SecurityException: The caller is not a device or profile owner or bound VrListenerService.
        at android.os.Parcel.readException(Parcel.java:1683)
        at android.os.Parcel.readException(Parcel.java:1636)
        at android.os.IHardwarePropertiesManager$Stub$Proxy.getCpuUsages(IHardwarePropertiesManager.java:127)
        at android.os.HardwarePropertiesManager.getCpuUsages(HardwarePropertiesManager.java:155)
        at gr.serafeim.sensorplayground.MainActivity.onCreate(MainActivity.java:21)
        at android.app.Activity.performCreate(Activity.java:6672)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6123) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 

谁能给我解释一下:

  • 什么是“设备或配置文件所有者”——我的申请怎么可能是一个?
  • 什么是“VrListenerService”
  • 有什么方法可以让我实际使用 HardwarePropertiesManager 来获取有关我的 CPU 的信息,否则这是一个失败的原因?

getCpuUsages 的文档只是说它抛出一个 SecurityException “如果设备所有者或当前 VR 服务之外的其他东西试图检索此服务提供的信息"-- 这并没有澄清任何事情。

最佳答案

经过一些研究,我发现了问题所在。仅允许在企业配置的 Android 设备中使用 HardwarePropertiesManager API(参见此处 https://developer.android.com/work/overview.html 和此处 https://sdgsystems.com/blog/introduction-android-work)。因此,此 API 主要用于 Kiosk 模式(或自带设备 - BYOD)的设备,以便您轻松地远程监控此设备。 “设备所有者”或“配置文件所有者”是指 BYOD 或 COSU - 公司拥有的单一用途应用程序或用户配置文件。

因此很遗憾,这个 API 不能被普通设备使用。

关于android - HardwarePropertiesManager 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49854637/

相关文章:

android - 有没有办法获得接近传感器与物体的精确距离?

java - android中传感器的后台服务

android - 我的 "hal_process_report_ind: Bad item quality: 11"有什么值得担心的吗?

android - 隐藏 Android SDK sdkmanager cli 命令的进度条

android - 重置 Inflated ListView 的高度,Listview 高度

c# - 消耗CPU使用率的进程

有关 CPU 消耗的 JavaScript 命名函数和事件处理程序

android - 尝试在动画过程中播放声音,但是动画的每一帧都播放一次声音

Android - 使用共享首选项存储/检索字符串

linux - 如何在 lunux 中找到进程及其所有子进程的总内存和 cpu 使用情况