关于android加速度计onSensorChanged的信息

2024-01-10

我正在尝试在android平台上编写一个体感游戏。我将整个运动检测算法包含到 onSensorChanged() 函数中。问题在于该函数根据输入执行不同的时间。我对函数如何执行和调用有一些疑问:-

1)如果我的函数执行很长时间,并且发生了 2 个 onSensorChanged 事件,那么这两个事件都会被调用还是只调用最新的一个?

2) onSensorChanged 函数是否在 Activity 线程以外的不同线程上运行?

3)onSensorcChanged函数的多个实例是否在不同线程上运行?变量访问是否有任何类型的同步?

4)谁能告诉我在哪里可以找到有关 onSensorChanged() 或相关信息的任何详细信息?

5)有什么方法可以让我先玩游戏一段时间,看看值如何变化以及函数的执行方式如何不同?


如果您能提供您正在使用的传感器类型,将会更有用。我假设它是Sensor.TYPE_ORIENTATION.

1)如果我的函数执行很长时间,并且发生了 2 个 onSensorChanged 事件,那么这两个事件都会被调用还是只调用最新的一个?

onSensorChanged 方法提供了一个事件对象(values参数),其中附加了特定传感器的值。为了Sensor.TYPE_ORIENTATION, event.values[0]是方位角,event.values[1]是音高,并且event.values[2]是卷。阅读 Android 开发者 SensorEvent 页面 http://developer.android.com/reference/android/hardware/SensorEvent.html为了更好地理解这一点。上述值的更新速度相当快,只有处理这些值更改的方式才能决定将使用哪个值更新。例如,您可以根据事件值的更改方式不断更新视图。

2) onSensorChanged 函数是否在 Activity 线程以外的不同线程上运行?

它在不同的线程上运行,该线程依赖于它所附加到的活动(实现了SensorEventListener接口或包含从在其上创建的匿名内部类实例化的对象SensorEventListener目的)。

3)onSensorcChanged函数的多个实例是否在不同线程上运行?变量访问是否有任何类型的同步?

我对此不太确定,但我想他们会同步event正在更新的对象。是的,实现类的多个实例SensorEventListener接口可以单独运行。

4)谁能告诉我在哪里可以找到有关 onSensorChanged() 或相关信息的任何详细信息?

  • SensorEventListener 文档 http://developer.android.com/reference/android/hardware/SensorEventListener.html#onSensorChanged%28android.hardware.SensorEvent%29

5)有什么方法可以让我先玩游戏一段时间,看看值如何变化以及函数的执行方式如何不同?

您使用图形或布局吗?如果您使用图形,

活动类别:

public class YourActivity extends Activity {
  MyView _view;
  int sensorAccuracy;
  SensorManager sensorManager;
  SensorEventListener sensorListener = new SensorEventListener() {
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
      sensorAccuracy = accuracy;
    }
    public void onSensorChanged(SensorEvent event) {
      //pass the values to view for display
      _view.setOrientation(event.values[0],event.values[1],event.values[2]);
    }
  };
  protected void onCreate(Bundle savedInstanceState) {
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(sensorListener,
            sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
            SensorManager.SENSOR_DELAY_FASTEST);
    _view = new MyView(this);
  }
}

查看班级

class MyView extends View() {
         Context _context;
         int _azimuth, _pitch, _roll;
         public MyView(Context context) {
          super(context);
          _context = context;
         }
         public setOrientation(azimuth, pitch, roll) {
          _azimuth = azimuth;
          _pitch = pitch;
          _roll = roll;
        }
        protected void onDraw(Canvas canvas) {
         paint.setStyle(Paint.Style.FILL);
         paint.setColor(Color.BLACK);
         canvas.drawText("Azimuth: " + _azimuth + "Pitch: " + _pitch + "Roll: "
                    + _roll, 10, 10, paint);
        }
      }

上面的代码将在屏幕顶部显示包含更新值的文本。您会注意到这些值更新非常频繁。同样,如果您使用布局,只需使用新事件值更新文本视图即可。

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于android加速度计onSensorChanged的信息 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • 使用 Android 前台服务为 MediaPlayer 创建通知

    问题就在这里 我目前正在开发一个应用程序 该应用程序必须提供 A 广播播放器 来自 URL 的 AAC 直播 还有一个播客播放器 来自 URL 的 MP3 流 该应用程序必须能够在后台运行 Android 服务 并通过以下方式向用户公开持续
  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • 菜单未显示在应用程序中

    由于某种原因 我的操作菜单在我的 Android Studio 应用程序中消失了 我正在按照教程学习如何创建 Android 应用程序 但最终遇到了这个问题 我正在使用 atm 的教程 http www raywenderlich com
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 已经使用 AsyncTask doInBackground 但新数据未显示

    我使用 AsyncTask 创建一个聊天室来接收消息 因此它总是检查即将到来的消息并将其显示给客户端 但代码似乎无法按我希望的方式工作 在客户端只显示所有旧数据 新数据不显示 因为当我尝试从服务器发送消息时 新数据没有显示在客户端中 我对这
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • 更新到材质 1.2.0 后,材质按钮上缺少圆角半径属性

    这是我的材质按钮代码
  • 从 Firebase 数据库填充微调器

    public class MainActivity extends AppCompatActivity DatabaseReference reference Spinner areaSpinner ArrayList
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来

随机推荐

  • Spring Integration 中的 REST 端点使消息通道成为多线程

    我有一个非常简单的 Spring Boot 应用程序 它提供了几个静态端点 这应该驱动将 sftp 文件上传到 sftp 服务器 我的要求是 如果有多个文件 则文件应该排队 我希望通过 sftp spring 集成工作流程的默认行为来实现这
  • 使用 DOMXPath 保留

    标签内的换行符?

    我目前正在使用 PHP 和DOMXPath获取所有的内容 p 网页的元素 p
  • 如何过滤 SCons Glob 结果?

    我有时想从 SCons 的 Glob 结果中排除某些源文件 通常是因为我想用不同的选项编译该源文件 像这样的事情 objs env Object Glob cc objs env Object SpeciallyTreatedFile cc
  • 如何在不更改图像的情况下更新ALAsset的exif?

    I use setImageData metadata completionBlock of ALAsset更新资产的 exif 元数据 我只想更新元数据 但此方法需要imageData作为第一个参数 我使用下面的代码来生成imageDat
  • jQuery.event.props 未定义

    我在用着jquery event move https github com stephband jquery event move在触摸设备上创建移动事件 该脚本在第 580 行抛出错误 570 Make jQuery copy touc
  • 地理定位在设备 ionic3 中不起作用

    我正在从事 ionic 3 基于位置的工作 我无法在这里获取当前位置的纬度和经度 我提到了我的可用代码 它在浏览器级别工作正常 但在移动设备中无法工作 code ionic cordova plugin add cordova plugin
  • PIMPL 习惯用法真的在实践中使用吗?

    我正在看书 卓越的 C Herb Sutter 所著 在那本书中我了解了 PIMPL 习惯用法 基本上 这个想法是创建一个结构private的对象class并将它们动态分配给减少编译时间 并且还以更好的方式隐藏私有实现 例如 class X
  • 如何防止 json_encode() 删除含有无效字符的字符串

    有没有办法保留json encode 从返回null对于包含无效 非 UTF 8 字符的字符串 在复杂的系统中进行调试可能会很痛苦 实际看到无效字符或者至少将其省略会更合适 就目前情况而言 json encode 会默默地丢弃整个字符串 示
  • Ionic 2:Cordova 不可用。确保包含 cordova.js 或在设备/模拟器中运行(在模拟器中运行)

    我刚刚设置了我的第一个 ionic 2 应用程序 我相当广泛地使用了 ionic 1 我正在尝试使用离子原生相机 http ionicframework com docs v2 native camerapreview 预览插件 设置非常简
  • 将 Maven 项目转换为 Eclipse 的动态 Web 项目

    使用 Maven 创建一个 Web 项目 mvn archetype generate DgroupId com trial DartifactId message DarchetypeArtifactId maven archetype
  • 如何接收短信并根据短信内容拨打电话提醒某人?

    因此 我尝试接收传入的短信 并根据短信的内容拨打带有特定录音的电话 例如 我有一个带调制解调器的门传感器 可以在门打开或关闭时向我的 twilio 发送文本 如果 Twilio 收到 门已打开 文本 则 twilio 将拨打我的手机并播放显
  • 如何创建所有数字组合的n维数组?

    我想创建一个函数AllCombnations d maxValue 这将创建一个包含从 0 到 的所有数字组合的 d 维数组maxValue 例如 在 3D 空间中创建所有数字组合 从 0 到maxValue可能是这样的 for int i
  • 挽救模块内特定类型的所有错误

    我有一个模块 在其中执行项目的所有加密 解密任务 我想抓住任何OpenSSL Cipher CipherError该模块中发生的异常以便我可以处理它们 是否可以做类似的事情 rescue from OpenSSL Cipher Cipher
  • Symfony 4 Composer 脚本

    我刚刚安装了 Symfony 4 项目并在中找到了此部分composer json scripts auto scripts cache clear symfony cmd assets install PUBLIC DIR symfony
  • 如何获得没有标签的地图?

    我想要一张有路网的地图 我只需要一张图片 但没有标签 地图上的文字 我尝试从 Google API 获取这样的地图并想 element geometry works 但是 例如 依然充满文字 如何获取没有文字标签的路网图 静态图片也可以 任
  • 如何打开两个Javafx窗口?

    我正在使用 javafx 想在按钮的 setOnAction 中编写代码来关闭 javafx1 类并运行 javafx2 类 但我看到错误 应用程序启动不得被调用多次 我怎样才能解决这个问题 This code is in the clas
  • 这段 JavaScript 代码是什么意思?

    var myval function 我不明白 function 含义甚至其他代码 你所拥有的是 自调用匿名函数 您首先通过在函数本身周围添加括号来创建函数表达式 只是为了写 function 在这种情况下不起作用 因为这将定义一个函数声明
  • Magento 扩展 404 错误

    我很难过 我有一个自定义扩展 可以在 Mac Leopard 本地完美运行 但是在将实时推送到主机 Centos Linux 后 当我尝试调用前端路由器时 出现 Magento 404 错误 例如这个网址 domain shop index
  • PHP 如何获取带有类和名称空间路径的方法名称作为字符串?

    我真的很讨厌写这个问题 因为我是一种 研究人员 而且 我总是能找到我正在寻找的东西 但这一个让我很烦恼 我在任何地方都找不到答案 所以 事情是这样的 正如标题所示 我需要获取一个方法名称 其中尾随类和命名空间路径作为字符串 我的意思是这样的
  • 关于android加速度计onSensorChanged的信息

    我正在尝试在android平台上编写一个体感游戏 我将整个运动检测算法包含到 onSensorChanged 函数中 问题在于该函数根据输入执行不同的时间 我对函数如何执行和调用有一些疑问 1 如果我的函数执行很长时间 并且发生了 2 个