我正在读取Sony SmartWatch 3上的加速度计传感器3.由于Android Wear 1.5更新采样率不会下降到约60Hz的低于60Hz,无论天气如何,我使用SENSOR_DELAY_NORMAL,SENSOR_DELAY_UI>或SENSOR_DELAY_GAME.在更新SENSOR_DELAY_NORMAL导致抽样率约为18个样本/秒之前. accelerometer.getMaxDelay()仍然返回62500,即16个样本/秒.我还尝试直接设置所需的延迟,当以sensorManager.registerSensor(this, accelerometer, 62500)注册传感器时,但这也不起作用. 有人知道如何降低采样率吗?对于我的应用程序提高节能非常重要,这就是为什么低采样率很重要的原因. 解决方案 它是如何有所不同的:不是Android更新改变了行为,这是我的误解. 对于可能在传感器批处理或采样率上有问题的每个人: 当显示为打开或关
以下是关于 android-sensors 的编程技术问答
我正在使用化石Gen 5智能手表运行Wearos来记录加速度计,陀螺仪(32 Hz)和PPG传感器(64 Hz)的传感器数据.我正在使用一个唯一的缓冲作者对象,每个传感器在创建每个传感器事件时将数据写入.txt文件(如下所示): void registerSensor(){ Log.i(TAG,"Sensor Registered"); try { accWriter = new BufferedWriter(new FileWriter(accFile, true)); gyrWriter = new BufferedWriter(new FileWriter(gyrFile, true)); ppgWriter = new BufferedWriter(new FileWriter(ppgFile, true)); } catch (IOException e) { e.printSta
我已经为化石Gen 6智能手表编写了一份磨损应用程序,该应用程序从板载传感器中提取了光插图图(PPG)数据,并连续更新屏幕上的值.这是我的onSensorChanged方法,它可以识别PPG传感器的事件,并相应地更新TextView对象.我还尝试使用FileWriter对象将每个基准写入CSV文件. @Override public void onSensorChanged(SensorEvent event) { // On event from PPG sensor, update text on screen and // write to CSV file. if (event.sensor.getType() == 65572) { sensorData = event.values[0]; String dataString = Float.toString(sen
是否有人成功阅读了Moto 360的心率传感器? mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE)); mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); 我遇到了一个错误,说" sensormanager:传感器或听众为null" 我知道齿轮现场使用了除了传感器以外的其他ID.Type_heart_rate ...我想知道Moto 360是如此. 我尝试了65538的传感器值,该值将自己报告为"健康传感器",但似乎也没有返回数据. 任何建议将不胜感激. 解决方案 我在Moto 360上做同样的事情,并且得到传感器和心率.您是否已将身体数据的许可: 使用 - permission android:name =" android.permission.body_sens
我正在遵循所描述的相同步骤在这里(Google Fit客户端连接部分工作正常). final DataType dataType=TYPE_STEP_COUNT_DELTA; DataSourcesRequest requestData = new DataSourcesRequest.Builder() .setDataTypes(dataType) // At least one datatype must be specified. .build(); Fitness.SensorsApi.findDataSources(mClient, requestData) .setResultCallback(new ResultCallback() { @Override public
我有一个课程,该课程在启动时会启动传感器侦听器.当事件触发时,该侦听器将最新的传感器值写入变量.该类继续进行一些逻辑,在某个时候,将检查此变量并根据值进行. 我的问题是,无法保证读取变量时会有任何值,因为Android传感器侦听器仅在传感器值更改时触发事件(并且不一定会在事件启动后触发事件) . 因此,我需要我的应用程序等待事件触发,以便它具有数据可以解决的数据(最好是超时,以确保它不会无限期地等待). 我的问题是,实施此等待的最佳方法是什么?我是否应该有一个处理程序,可以在继续之前检查每个X毫秒吗?我是否应该在侦听器和处理程序之间传递某种消息,以便在编写数据时告诉它,现在可以恢复?还有其他更好的选择吗? 编辑:我应该指出,类逻辑是在UI线程上执行的. 解决方案 我正在使用处理程序以完全相同的情况. Handler handler = new Handler(); handler.post(new Runnable() {
我试图仅跟踪设备在垂直方向上的运动,即向上和向下的运动.这应该是指设备方向不可思议的.我已经知道或尝试过的事情是这些 线性加速度由传感器type_linear_acceleration给出,轴是电话轴,因此跟踪任何特定轴都不会有所不同. 我尝试应用转置或旋转矢量倒数(旋转向量的逆或转置是相同的),然后尝试跟踪线性加速度向量的z方向.似乎没有帮助. 我正在尝试制作带有重力值(type_gravity)的点产品以获取加速度的方向,但似乎很容易出错.即使我迅速将设备移动,也说下去了. 我将在此处概述此方法 dotProduct = vectorA[0]*vectorB[0]+vectorA[1]*vectorB[1] + vectorA[2]*vectorB[2]; cosineVal = dotProduct/(|vectorA|*|vectorB|) if(cosineVal > 0 ) down else Up. 该方法的缺陷是什么?请帮
我知道在银河系三星SIII中,可以在设置中配置一个选项,以避免用户查看屏幕时关闭屏幕.我认为手机使用相机或一种存在的传感器. 是否可以通过编程方式进行操作? 即使是,有些设备也无法做到这一点.我想在这里有些可能性:使用摄像头,加速度计甚至用户活动:如果屏幕打开,触摸,我不知道.关于Android的"用户存在"有一个特定的库?可用时使用所有传感器中最好的? 解决方案 是的,有类似的东西. 您可以使用 sensormanager 获得传感器事件.例如,Light 传感器将对您有用: > private SensorManager sensorManager; private Sensor lightSensor; private float lightAmount; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setC
我目前正在从事一个基于健康的项目,重点是智能手机使用.为此,我想监视他的触摸屏用法模式,即他在屏幕上按下手多久了. 当此限制越过阈值时,将向他发出警告. 我需要知道我能够在背景中追踪一个人屏幕截图(即当他使用手机中的所有其他应用程序时) 如果是这样,哪些功能会帮助我? 解决方案 出于隐私和安全原因,Android不支持此. 欢迎您进入所有屏幕触摸,以了解用户何时触摸屏幕.但是,屏幕触摸将无法提供给基础应用程序,因此用户将无法使用该设备. 欢迎您研究实现AccessibilityService,以便能够在所有应用程序中找到有关用户输入的信息.但是,最后我检查了一下,这确实使您能够找出"他在屏幕上按下双手多长时间". 欢迎您创建一个自定义的Android ROM,该ROM在所需的监视中烘烤,然后在您选择支持的任何设备上部署该自定义ROM.凭借自己的Android构建,您几乎可以做任何您想做的事情,但是您不会制作简单的应用程序. 在扎根的设备上,您可能可以
我需要在Android中记录传感器数据.为了将值存储在数据库中,我需要时间戳作为格式中的主键-HH:MM:SS:SS:SS代表毫秒值.当我尝试使用sensorevent.timestamp(使用以下代码)时,我无法从日期类获得毫秒. long currTimeRelativeToBoot = SystemClock.uptimeMillis(); long currTimeAbsolute = System.currentTimeMillis(); double mStartTimeAbsoluteS = ((double)(currTimeAbsolute - currTimeRelativeToBoot))/(double)1000.0; double temp = mStartTimeAbsoluteS+((double)event.timestamp)/1000000000.0; Date time=new java.util.Dat
这是我在这里对我的问题的后续行动: android thread可运行性能 我很难将自己的app 围绕同步方法缠绕 我每当更改传感器并将传感器值存储到阵列中 float[] accelerometerMatrix = new float[3]; float[] accelerometerWorldMatrix = new float[3]; float[] gyroscopeMatrix = new float[3]; float[] gravityMatrix = new float[3]; float[] magneticMatrix = new float[3]; float[] rotationMatrix = new float[9]; class InsertHandler implements Runnable { public void run() { //get values from arrays and in
我正在开发一个可穿戴的应用程序,我注意到一种奇怪的行为. 我有一个类FooService extends Service implements SensorEventListener,我已经覆盖onSensorChanged()方法: @Override public void onSensorChanged(SensorEvent sensorEvent) { if (sensorEvent.sensor.getType() != Sensor.TYPE_ACCELEROMETER) { Log.e(TAG, getString(R.string.err_wrong_sensor_registered)); return; } float x = sensorEvent.values[0]; float y = sensorEvent.values[1]; float z = sensorEv
我有一个应用程序,在该应用程序中,我将传感器对加速度数据进行轮询,然后将XYZ值保存到SQL DB.编码非常简单: public void onSensorChanged(SensorEvent event) { sensor = event.sensor; int i = sensor.getType(); if (i == MainActivity.TYPE_ACCELEROMETER) { accelerometerMatrix = event.values; } else if (i == MainActivity.TYPE_GYROSCOPE) { gyroscopeMatrix = event.values; } else if (i == MainActivity.TYPE_GRAVITY) { gravityMat
我正在制作一个使用两个传感器的应用. TYPE_MAGNETIC_FIELD TYPE_GRAVITY i初始化了相应的传感器,然后在onSensorChanged函数中,正在获取数据并在相同的情况下进行计算. 我有一个简单的问题,如何使用onAccuracyChanged函数来过滤数据?我想要中等和高精度的数据! 我打印了基本语句,以查看在调试应用程序时获得的准确性. 代码: `@Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // Do something here if sensor accuracy changes. // You must implement this callback in your code. // I initialized mValuen as mValuen = mS
Android无论是如何定向,都可以在设备坐标系中提供传感器数据.有什么方法可以在"重力"坐标系中使用传感器数据?我的意思是,无论设备如何定向,我都希望在坐标系中加速度计数据和方向,Y轴指向天空,X轴向东,Z轴向南极. 我看了看remapCoordinateSystem,但似乎仅限于交换轴.我想为方向,我将不得不进行一些低级旋转矩阵转换(或者有更好的解决方案吗?).但是加速数据怎么样?是否有任何方法可以将数据与固定的坐标系(世界坐标系)有关. 我需要的原因是,当手机放在手机中时,我正在尝试执行一些简单的运动手势,对于我来说,将所有数据与用户而是设备坐标系统相关的坐标系统中更容易(这将具有在不同用户的口袋中有些不同的方向) 解决方案 开始,您基本上可以在开始时获得北方方向 - 为此,您使用加速度计和磁场传感器来计算方向(或不推荐的方向传感器). 拥有它后,您可以从那些方位角,螺距和滚动角度计算旋转矩阵(方向余弦矩阵).将您的加速度向量乘以该矩阵将使您的设备框架移动
我正在尝试获取设备倾斜(沿y轴旋转设备,但不幸的是我无法实现目标.我尝试使用type_accelerometer和type_magnetic_field作为组合传感器(传感器融合)尝试了很多东西.我也已经尝试过.跟随运动传感器 我想要什么? 我想获得车辆中附在的设备(手机)的倾向.假设,我将设备连接在汽车上,汽车是静止的.因此,倾斜度为0度.灯塔,当车辆通过通过或天桥经过时,应相应的倾斜度. 我试图对此进行计算,这是我的代码: ... ... private static float ALPHA = 0.005f TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main
因此,我正在使用此代码来获取加速度计数据.当我处于DDMS模式以检查我的打印语句打印的内容时,我注意到手机不移动时什么都没有打印. IE.它在桌上.我认为原因是当手机不移动时,onsensorchanged不会调用,然后在手机再次开始移动时调用.如果我想捕获数据,无论手机是否正在移动,我是否应该使用其他功能?还有其他选择吗?还是解决方案?任何帮助. 谢谢! public void onSensorChanged(SensorEvent event) { StringBuffer buff = new StringBuffer(); buff.append(String.valueOf(event.timestamp)); buff.append(comma); buff.append(String.valueOf(event.values[0])); buff.append(comma); buff.append(Stri
我在sensormanager.unregisterlistener上有一些问题.它们与 android,thread,thread,thread,无法解开regregister sensoreversersoreverister sensoreventlistlistener 和. 问题是,在活动完成后,我将侦听器注册,但是传感器一直发送值,直到应用程序被完全破坏为止. 这是我的代码: 我的SensorController实现SensoreventListener public class SensorController implements SensorEventListener{ 构造函数: public SensorController(Context context){ sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); }
我的问题类似于更改Android中的传感器坐标系统 无论设备方向如何,我都希望能够将用户的动作相互比较.因此,当用户以肖像方向伸出手机并弯曲手臂时,加速读数与他在景观中握住手机,然后将手臂朝同一方向弯曲时. 这就是我所说的"用户"坐标系.它与世界坐标系统不同,因为它应该无关紧要用户面临的风向.它与设备坐标有所不同,因为用户如何固定其设备都不重要. 在我的应用中可以接受,在每个运动之前进行校准步骤,以便可以确定基本/静止方向矩阵.这可能只是将第一机芯的矩阵与第二个运动的倒数相乘(然后是新值?) 的问题. 提到的问题中的答案似乎是正确的,但是我需要一个更具体的解释,实际代码样本是理想的. 注意remapcoordinatesystem不够的,它仅接受直角.由于设备被绑在手腕上,我需要能够处理小偏差,这可能并不总是与手臂成直角. 解决方案 我目前正在研究这个问题,我认为这可能会有所帮助: 将设备坐标系统转换为世界corrdinate System P> 我
我必须显示用户指向Android设备的哪个方向. 我正在使用Sensor.TYPE_ACCELEROMETER,Sensor.TYPE_MAGNETIC_FIELD获得方位角,俯仰,滚动.但是我能够弄清楚如何从中获取指示(北,南,东,西,...). 请帮助 谢谢 解决方案 要指向北方,您可以以度计算旋转: float rotation = -azimut * 360 / (2 * 3.14159f); 您可以看到以下指南针示例,该示例使用加速度计和磁场: http://www.codingforandroid.com/2011/01/ususion-erientation-sensors-sensors-simple.html Azimuth在Wikipédia上:/p> 其他解决方案 您有几个实施 Android上的指南针.