如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)



  

1.      OpenIntents项目和可用资源介绍

[1].    项目介绍:OpenIntents项目的目的是提供一些开源的意图和接口,通过一些可以重用的组件让移动应用程序更加紧密的在一起工作。而且对于这些开源的项目,OpenIntents组织都会提供相应的源代码和示例程序展示项目如何使用。

[2].    项目资源:免费开放源代码下载地址在www.openintents.org;
讨论区: 在这里和开发人员一起讨论bug和新特征
翻译:帮助OpenIntents组织把开源项目翻译成不同语言
新特征
: 在这里你可以浏览新特征请求哟列表

[3].    可重用组件
在你的应用中可以通过Intent重用下列组件:
OI About: 显示作者的概要信息
OIFile Manager: 提供“打开”和“另存为对话框”
OISafe:加密
OIUpdate: 更新

[4].    开发人员工具
Sensorsimulator:模拟传感器输入(各种传感器,温度,湿度,光照,以及电磁电量和GPS)
Androidxml2po:使用这个工具能够让志愿者将你的程序翻译成各种不同的语言

2.      SensorSimulator使用介绍

[1].    下载,安装,配置
地址Download it
运行SensorSimulator(bin/sensorsimulator-x.x.x.jar)程序
在Android模拟器上安装bin/SensorSimulatorSettings-x.x.x.apk(adb install apk_path)
运行SensorSimulatorSettings,输入IP Address和socket portnumber,如下图所示:
说明: C:\Documents and Settings\Administrator\桌面\小Q书桌-截图\小Q截图-20120517152338.png
说明: C:\Documents and Settings\Administrator\桌面\小Q书桌-截图\小Q截图-20120517152537.png
说明: C:\Documents and Settings\Administrator\桌面\小Q书桌-截图\小Q截图-20120517152625.png至此,配置已经完成

[2].    测试配置
在SensorEmulator的Sensors选项卡中,激活你想要使用的传感器,如下图
说明: C:\Documents and Settings\Administrator\桌面\小Q书桌-截图\小Q截图-20120517153007.png在Android模拟器中选择Sensor EmulatorSettings里的Testing选项卡,单击Connect按钮,那么Android模拟器中相关传感器数据机会显示如下图所示,表示你已经连接成功,这时你还可以使用SensorEmulator中的手机移动来观测Android模拟器和SensorEmulator中的数据变化:
如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)注意事项:如果要激活其它的传感器,那么必须要断开连接之后从新链接,才能够显示对应的数据

[3].    SensorEmulator使用介绍
Quick Settings 选项卡,支持快速设置传感器的数值
说明: C:\Documents and Settings\Administrator\桌面\小Q书桌-截图\小Q截图-20120517153852.pngSensorParameters选项卡,能够查看某个传感器的详细信息,并且进行高级设置,以及给出这个传感器的帮助信息
说明: C:\Documents and Settings\Administrator\桌面\小Q书桌-截图\小Q截图-20120517154115.png T如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)TelnetEmulator菜单
通过Telnet模拟器选项卡,向Android模拟器发送gps信息和电池电量信息
说明: C:\Documents and Settings\Administrator\桌面\小Q书桌-截图\小Q截图-20120517154428.png
Additional Settings选项卡:完成Sensor Emulator端口号以及数据发送频率等的设置说明: C:\Documents and Settings\Administrator\桌面\小Q书桌-截图\小Q截图-20120517154555.pngSenarioSimulator:对设备所经历的状态进行记录和模拟
要对设备状态进行记录和模拟,首先在Android 设备上安装SensorRecordFromDevice.apk(bin/SensorRecordFromDevice.apk)
如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)
按照提示操作,然后点击记录,那么我们就可以在SenarioEmulator中看到设备的各个状态,以及各个状态对应的传感器参数值。
如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)

[4].    使用介绍
不使用传感器模拟器类库时传感器使用的代码示例:

package ss.pku.edu.cn;

 

import java.util.List;

 

import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;

 

import android.app.Activity;

import android.content.Context;

import android.hardware.Sensor;

import android.hardware.SensorEvent;

import android.hardware.SensorEventListener;

import android.hardware.SensorManager;

import android.os.Bundle;

import android.widget.TextView;

 

public class SensorDemoActivityextends Activity implementsSensorEventListener

//SensorManagerSimulator使用      

{

   

   private SensorManager sensor_manager_original;

   //SensorManagerSimulator的使用

 

   private boolean is_available;

   private TextView text_view;

 

   @Override

   public void onCreate(Bundle savedInstanceState){

      super.onCreate(savedInstanceState);

      setContentView(R.layout.main);

      sensor_manager_original= (SensorManager)getSystemService(Context.SENSOR_SERVICE);

      //SensorManagerSimulator的使用

      

      text_view = (TextView)findViewById(R.id.tv);

      is_available = false;

 

   }

 

   @Override

   protected void onResume() {

      super.onResume();

      Sensor sensor=sensor_manager_original.getDefaultSensor(Sensor.TYPE_ORIENTATION);

      sensor_manager_original.registerListener(this,sensor,SensorManager.SENSOR_DELAY_FASTEST);

      //SensorManagerSimulator的使用

      

   }

 

   @Override

   protected void onStop() {

      // TODO Auto-generated method stub

      super.onStop();

      sensor_manager_original.unregisterListener(this);

      SensorManagerSimulator的使用

      

   }

   //SensorManagerSimulator使用

   

 

   public void onAccuracyChanged(Sensorsensor, int accuracy) {

      // TODO Auto-generated method stub

      

   }

 

   public void onSensorChanged(SensorEvent event){

      // TODO Auto-generated method stub

      if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){

          text_view.setText("x:" + event.values[0] + "y:"

                 + event.values[1] + "z:" + event.values[2]);

      }

   }

}
在上面代码的基础之上,使用传感器模拟器类库的步骤为
a.
在构建路径中加入lib/sensorsimulator-lib-x.x.x.jar
b.将sensor_manager_original= (SensorManager)getSystemService(Context.SENSOR_SERVICE);

sensor_manager_present =SensorManagerSimulator.getSystemService(this,

             SENSOR_SERVICE);sensor_manager_present.connectSimulator()代替
c.一般在onResume()方法中为传感器注册监听器,在onStop()方法中取消注册
d.实现SensorEventListener接口,重写onAccuracyChanged(Sensor sensor,inaccuracy)和onSensorChanged(SensorEventevent)方法即可
注意点:大家可能会担心,我如果为了测试在代码中使用OpenIntents组织的SensorSimulator项目,那么到发布的时候还要大量修改源代码,这一点在OpenIntents组织设计SensorSimulator项目的时候就已经想到了,如果你连接的设备并不是传感器模拟器,那么SensorManagerSimulator实际上是调用SensorManager完成获取传感器数据的功能,所以这个时候不需要修改代码,依然获取的是设备上传感器的数据。

[5].    传感器的数据定义
有关传感器的数据定义,能够在GoogleDevleloper网站上关于
Android SensorEvent reference的介绍中找到,在具体使用某一种传感器的时候,你可以参照这上面的资料了解某种传感器的数据是什么含义。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值