zoukankan      html  css  js  c++  java
  • 如何在Android应用程序中使用传感器模拟器SensorSimulator

    原文地址;

    如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET
    http://blog.csdn.net/pku_android/article/details/7596864

    (OpenIntents开源项目SensorSimulator)

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

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

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

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

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

    2.      Sensor Simulator使用介绍

    下载,安装,配置
    地址 Downloadit
    运行SensorSimulator(bin/sensorsimulator-x.x.x.jar)程序
    在Android模拟器上安装bin/SensorSimulatorSettings-x.x.x.apk (adbinstall apk_path)

    运行SensorSimulatorSettings,输入IP Address 和socket port number,如下图所示:

    clip_image001

    clip_image002

    clip_image003

    [2].    至此,配置已经完成

    测试配置
    在Sensor Emulator的Sensors选项卡中,激活你想要使用的传感器,如下图

    clip_image004

    在Android模拟器中选择Sensor Emulator Settings里的Testing选项卡,单击Connect按钮,那么Android模拟器中相关传感器数据机会显示如下图所示,表示你已经连接成功,这时你还可以使用Sensor Emulator中的手机移动来观测Android模拟器和Sensor Emulator中的数据变化:

    clip_image005

    [3].    注意事项:如果要激活其它的传感器,那么必须要断开连接之后从新链接,才能够显示对应的数据

    SensorEmulator使用介绍
    Quick Settings
    选项卡,支持快速设置传感器的数值

    clip_image006

    clip_image007

    clip_image008

    Telnet Emulator菜单
    通过Telnet模拟器选项卡,向Android模拟器发送gps信息和电池电量信息0.5O� s-hNmH�n-size:11.0pt;font-family:"Calibri","sans-serif";mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'>

    clip_image009

    Additional Settings选项卡:完成Sensor Emulator端口号以及数据发送频率等的设置 -fonW� mlhNm8�n;mso-ascii-theme-font:minor-latin;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-no-proof:yes'>模拟器选项卡,向Android模拟器发送gps信息和电池电量信息

    clip_image010

    Senario Simulator:对设备所经历的状态进行记录和模拟
    要对设备状态进行记录和模拟,首先在Android 设备上安装SensorRecordFromDevice.apk(bin/SensorRecordFromDevice.apk)

    clip_image011

    按照提示操作,然后点击记录,那么我们就可以在Senario Emulator中看到设备的各个状态,以及各个状态对应的传感器参数值。
    -hq
    � -hhNm8�nminor-latin;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA;mso-no-proof:yes'>Android 设备上安装SensorRecordFromDevice.apk(bin/SensorRecordFromDevice.apk)

    clip_image012

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

    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 SensorDemoActivity extends Activity implementsSensorEventListener

    //SensorManagerSimulator使用

    /*org.openintents.sensorsimulator.hardware.SensorEventListener*/ {

        /** Called when the activity is firstcreated. */

    private SensorManager sensor_manager_original;

        //SensorManagerSimulator的使用

    /*  private SensorManagerSimulator sensor_manager_present;*/

    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的使用

           /*sensor_manager_present= SensorManagerSimulator.getSystemService(this,

                  SENSOR_SERVICE);

           sensor_manager_present.connectSimulator();*/

           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的使用

           /*org.openintents.sensorsimulator.hardware.Sensorsensor = sensor_manager_present

                  .getDefaultSensor(Sensor.TYPE_ORIENTATION);

           sensor_manager_present.registerListener(this, sensor,

                  SensorManagerSimulator.SENSOR_DELAY_FASTEST);*/

        }

        @Override

    protected void onStop() {

           // TODO Auto-generatedmethod stub

    super.onStop();

           sensor_manager_original.unregisterListener(this);

           ////SensorManagerSimulator的使用

           /*sensor_manager_present.unregisterListener(this);*/

        }

        //SensorManagerSimulator使用

        /*public void onAccuracyChanged(

               org.openintents.sensorsimulator.hardware.Sensor arg0, intarg1) {

           // TODO Auto-generated method stub

        }

        public void onSensorChanged(

               org.openintents.sensorsimulator.hardware.SensorEvent arg0){

           // TODO Auto-generated method stub

           if (arg0.type == Sensor.TYPE_ORIENTATION) {

               // 这里我们可以得到数据,并在文本中显示出来

               float[] values=arg0.values;

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

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

           }

        }*/

    public void onAccuracyChanged(Sensor sensor, int accuracy) {

           // TODO Auto-generatedmethod stub

        }

    public void onSensorChanged(SensorEvent event) {

           // TODO Auto-generatedmethod 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,in accuracy)和onSensorChanged(SensorEvent event)方法即可
    注意点:大家可能会担心,我如果为了测试在代码中使用OpenIntents组织的SensorSimulator项目,那么到发布的时候还要大量修改源代码,这一点在OpenIntents组织设计SensorSimulator项目的时候就已经想到了,如果你连接的设备并不是传感器模拟器,那么SensorManagerSimulator实际上是调用SensorManager完成获取传感器数据的功能,所以这个时候不需要修改代码,依然获取的是设备上传感器的数据。

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

  • 相关阅读:
    【python】opencv教程CV2模块——翻转图片并保存
    【python】opencv教程CV2模块——简单画图
    【python】opencv教程CV2模块——复制图片、灰度模式并保存
    【python】opencv教程CV2模块——窗口显示图片、按键盘指定s键保存
    【python】opencv教程CV2模块——打开读取图片、窗口显示、保存图片
    【前端】一行代码实现网站网页变黑白灰效果
    【python】彩色图秒变酷炫黑白图,灰度模式,比PS还好用的图像处理,cv2
    【python】批量调整图片亮度和饱和度,比PS还方便的图片处理,cv2
    【python】使用滑动条调整图片亮度和饱和度,比PS还方便的图片处理,cv2
    代码-JS之正则验证手机格式
  • 原文地址:https://www.cnblogs.com/wangshunli/p/4553693.html
Copyright © 2011-2022 走看看