当前位置: 首页 > 知识库问答 >
问题:

指南针适用于真实设备,但不适用于模拟器

曹浩波
2023-03-14

编辑:Android Studio很慢地告诉我传感器。TYPE_ORIENTATION已弃用。由于某种原因,直到编写并运行代码很久之后,它才告诉我。然而,问题仍然存在。我只是想在我的问题中加入这个发现。

我有一个充当指南针的ImageView。在真实设备上一切都正常,但在我的模拟器上,扩展控件对ImageView没有影响。

如果我在模拟器上使用谷歌地图,我可以看到指南针在工作。如果我的应用程序在真实设备上运行,为什么它的工作原理不一样?

领域:

 /*
COMPASS STUFF
 */
private ImageView compass;
private float currentDegree = 0f;
private SensorManager mSensorManager;

创建时:

compass = findViewById(R.id.compass);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

on恢复:

 @Override
protected void onResume() {
    super.onResume();

    mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
            SensorManager.SENSOR_DELAY_GAME);
}

打开暂停:

@Override
protected void onPause() {
    super.onPause();

    mSensorManager.unregisterListener(this);
}

改变的:

@Override
public void onSensorChanged(SensorEvent sensorEvent) {

    float degree = Math.round(sensorEvent.values[0]);

    RotateAnimation rotateAnimation = new RotateAnimation(
            currentDegree,
            -degree,
            Animation.RELATIVE_TO_SELF, 0.5f,
            Animation.RELATIVE_TO_SELF,
            0.5f);

    rotateAnimation.setDuration(210);
    rotateAnimation.setFillAfter(true);
    compass.startAnimation(rotateAnimation);
    currentDegree = -degree;
}

老实说,我不知道还能发布什么,因为我已经在两部手机上测试过了(银河s6活动版和银河s8边缘升级版),它在两部手机上都能工作。它只是在模拟器中不做任何事情。

我会证明它在我自己的物理设备上运行。

在模拟器上失败...--_______--

有什么建议吗?我真的很想测试其他APIs设备。

共有1个答案

申屠泉
2023-03-14

好吧,事实证明,我关于已弃用的Sensor.TYPE_ORIENTATION的发现解决了我的问题。我利用了Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELD常量,我的指南针现在在我的模拟器中工作。:-)

我用这个博客来帮助我了解传感器的用法。

这是博客的分步视频版本。

 类似资料:
  • 代码如下: 这是适配器,我在这里为列表做了自己的设计(< code>R.layout.zalistu),它在仿真器中工作,但在设备上它给我一个错误(应用程序意外停止),如果我使用< code>simple_list_item_1,那么它在仿真器和我的设备上都可以正常工作。 这里是R:layout.zalistu: 日志猫: 我设备上的Android版本是2.3.7,模拟器上的版本是4.0.4(AP

  • 我是Android开发的新手 我试图在应用程序中创建自定义标题栏。它正在模拟器中工作。但是当我在我的设备上运行这个应用程序时…它停止了(没有加载) 自定义标题栏的 XML 代码 我的活动类中的代码 模拟器中没有问题...它在那里工作正常,但在真实设备中不起作用,如果有人请告诉我解决方案。

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。

  • 我正在尝试为中的每一行设置 突出显示。 我有一个可绘制的资源文件: 我已经在三星Galaxy S5设备上进行了测试,该设备可以正常工作。但是,当我在安装了Android 4.4.2的中兴Compel设备上进行测试时,它不起作用。 我的应用程序针对API 15及更高版本。 任何想法为什么这样: 不能在Android4.4.2设备上工作? 日志中的错误: 由以下原因引起:组织:二进制 XML 文件行