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

原文地址http://blog.sina.com.cn/s/blog_621c16b101013ygl.html

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

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

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

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

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

  1. Sensor Simulator使用介绍

[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 port number,如下图所示:


至此,配置已经完成

[2].     测试配置
Sensor EmulatorSensors选项卡中,激活你想要使用的传感器,如下图
Android模拟器中选择Sensor Emulator Settings里的Testing选项卡,单击Connect按钮,那么Android模拟器中相关传感器数据机会显示如下图所示,表示你已经连接成功,这时你还可以使用Sensor Emulator中的手机移动来观测Android模拟器和Sensor Emulator中的数据变化:
注意事项:如果要激活其它的传感器,那么必须要断开连接之后从新链接,才能够显示对应的数据

[3].     Sensor Emulator使用介绍
Quick Settings
选项卡,支持快速设置传感器的数值
Sensor Parameters选项卡,能够查看某个传感器的详细信息,并且进行高级设置,以及给出这个传感器的帮助信息
 TTelnet Emulator菜单
通过Telnet模拟器选项卡,向Android模拟器发送gps信息和电池电量信息

Additional Settings选项卡:完成Sensor Emulator端口号以及数据发送频率等的设置 Senario Simulator:对设备所经历的状态进行记录和模拟
要对设备状态进行记录和模拟,首先在Android 设备上安装SensorRecordFromDevice.apk(bin/SensorRecordFromDevice.apk)

按照提示操作,然后点击记录,那么我们就可以在Senario Emulator中看到设备的各个状态,以及各个状态对应的传感器参数值。

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

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

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

时间: 2024-12-16 03:22:34

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

如何在Android应用程序中使用传感器模拟器SensorSimulator

原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/article/details/7596864   (OpenIntents开源项目SensorSimulator) 1.      OpenIntents项目和可用资源介绍 [1].    项目介绍:OpenIntents项目的目的是提供一些开源的意图和接口,通过一些可以重用的组件让移动应用程序更加紧密的

Android技术17:Android应用程序中执行二进制命令

Android系统底层为Liunx内核,内核中有大量的可执行的二进制文件,system/bin目录下面,如下图 我们都知道在Linux命令窗口中可以执行上述命令,但是在Android应用程序中是如何调用该命令呢? 1.获取当前Runtime Runtime.getRuntime(); 2.执行命令 例如执行ps 查看进程信息 Process precess=Runtime.getRuntime().exec("ps"); 3.获取内容 InputStream is=precess.ge

Android应用程序中的多个Activity的显示创建和调用

布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orien

在 Android 应用程序中使用 SQLite 数据库以及怎么用

part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开源的,不论什么人都能够使用它.很多开源项目((Mozilla, PHP, Python)都使用了 SQLite. SQLite 由下面几个组件组成:SQL 编译器.内核.后端以及附件.SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE).使调试.改动和扩展 SQLite 的内核变得更加方便. 图

在Android应用程序中实现推送通知

几乎每一个应用程序的一个重要特性是支持推送通知的能力.使用推送通知,您可以更新用户,而不需要应用程序在任何时候运行或轮询服务器, 避免潜在的电池电量不足. 随着火力点云信息的介绍(FCM),谷歌使得在Android应用程序中实现推送通知变得容易了一点.FCM是谷歌云消息(GCM)的新版本和改进版本,您可以使用它将远程通知发送到客户机应用程序.对于将瞄准多个平台或需要利用先进的推操作(如分段推送)的应用程序,我们可以使用带有Azure通知集线器的FCM. 与GCM不同,FCM负责为您提供基本的消息

如何在Android的ListView中构建CheckBox和RadioButton列表(Android版支持单选和多选的投票项目)

引言 我们在android的APP开发中有时候会碰到提供一个选项列表供用户选择的需求,如在投票类型的项目中,我们提供一些主题给用户选择,每个主题有若干选项,用户对这些主题的选项进行选择,然后提交. 本文以一个支持单选和多选投票项目为例,演示了在一个ListView中如何构建CheckBox列表和RadioButton列表,并分析了实现的原理和思路,提供有需要的朋友参考. 项目的演示效果如下. 数据源 通常我们的数据源来自于数据库.首先,我们构建投票项目类SubjectItem. /** * 主题

网格视图在Android应用程序中的使用

网格视图是在应用程序中比较常见的视图. 首先介绍一下GridView类,GridView类位于android.widget包下,该视图是将其他空间以二维格式显示到表格中的,而这些控件全部来自于ListAdapter适配器. GridView类的属性同样有两种配置方式,即XML属性配置和Java代码中配置.如表中列出了常见的属性和方法. 其次,介绍一下网格视图的使用,下面将通过一个完整的案列详细介绍网格视图的使用方法,在该案例中同样列出了各个动漫名人,包括其照片及描述,案例的开发步骤如下: 创建一

Android在程序中浏览网页

本文是自己学习所做笔记,欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 有时须要在程序中浏览一些网页.当然了能够通过调用系统的浏览器来打开浏览.可是大多数情况下,这样的方式并不适用.   以下给出怎样在程序中浏览网页.先看效果图: 事实上,这里主要是利用了WebView控件及它的一些方法.   通过WebView的loadUrl(String url)能够装载指定的地址的网页内容,并显示在控件中,上一页和下一页的功能分别相应于WebView的goB

Android 在程序中关闭和打开屏幕

需求:在程序中(通过事件等方式)打开和关闭屏幕 思路:一般情况下,关闭屏幕不是将屏幕真的关闭,而是将屏幕的亮度调到最低.一般情况下Android设备对屏幕可             调节的最低亮度是有一个限制的.如果你的设备真的允许完全关闭屏幕,则只能考虑为这款设备的特性,在你             写程序时是要考虑到大多数设备的. 实现: //启用屏幕常亮功能 private void turnOnScreen() { WindowManager.LayoutParams params =