s858t指南针不能动 风弄,显示手机未包含方向方向传感器。求解

Android方向传感器实践——自己动手做指南针 - 天涯的技术专栏
- 博客频道 - CSDN.NET
15928人阅读
传感器()系统可以让智能手机的功能更加丰富多彩,在系统中支持多种传感器。的系统涉及了的各个层次。
Android系统支持多种传感器,有的传感器已经在的框架中使用,大多数传感器由应用程序来使用。
Android传感器类型分为加速度、磁场、方向、光线、临近性、温度等,具体的如下表:
JAVA中的名称
本地接口名称
TYPE_ACCELEROMETER
SENSOR_TYPE_ACCELEROMETER
TYPE_MAGNETIC_FIELD
SENSOR_TYPE_MAGNETIC_FIELD
TYPE_ORIENTATION
SENSOR_TYPE_ORIENTATION
TYPE_GYROSCOPE
SENSOR_TYPE_GYROSCOPE
光线(亮度)
TYPE_LIGHT
SENSOR_TYPE_LIGHT
TYPE_PRESSURE
SENSOR_TYPE_PRESSURE
TYPE_TEMPERATURE
SENSOR_TYPE_TEMPERATURE
TYPE_PROXIMITY
SENSOR_TYPE_PROXIMITY
在程序中我们可以获取到移动设备上方向传感器、加速度传感器或其他传感器的信息,我们可以根据得到的数值与上一次得到的数值之间的关系来进行需要的操作。在指南针程序中我们主要需要获取方向的数据,因此我们在实验机上做了一个测试,获取了在不同情况下传感数值的变化规律。
下面是我们实验中测试到的数据(由于我们所用实验机只支持方向传感器,我们只测试了方向传感器在不同状态下的数值变化关系):
手机水平放置,顶部指向正北方
x、y、z方向值为0
水平逆时针旋转
水平顺时针旋转
当手机左侧抬起时
当手机右侧抬起时&
当手机顶部抬起时&&
当手机底部抬起时&&
*注意:实验数据是基于实验机型号(HTC&G6),其它型号的设备可能会有所不同。
&&& 经过实验,我们发现当手机顶部指向正北方时方向值为0,顶部指向正东方时方向值为90,顶部指向正南方时方向值为180,顶部指向正西方时方向值为270。根据这些数据我们就可以根据方向值的范围盘端当前我们的方位,可以确定指南针的读数。
程序界面非常简洁,一张指南针的图片与相关方位的度数。上方白色小箭头所指方向代表我们当前指向的方向。指南针图片会根据所向方位做出相应的旋转,上方度数也会做出适当的响应,显示当前方位和方向读数。
由于我只考虑在G6上能正常演示,G6的屏幕分辨率为320*480,相关的坐标值我也是根据这个分辨率确定的,移植到其他型号的手机上可能不能正常运行,但只需要修正一下代码就可以,这个希望读者自行修正。
具体步骤如下:
1.首先创建项目SDK版本选择2.1,工程命名为MyCompass
2.添加资源到res/drawable下,一张指南针的图片和白色小箭头图片,格式为透明PNG,注意图片文件名需要小写开头。
3.新建一个CompassView类,用于程序布局设置。
4.新建MyCompass类,这为主程序,在该类中获取传感器信息。
下面附上CompassView类和MyCompass类的代码,同时提供源程序的下载,如果有什么问题的话随时可以与我联系,我的qq:,电子邮箱,本人非常乐意与大家一起交流,希望大家能共同进步。
源代码的下载地址:
CompassView.java
package com.
import android.content.C
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.C
import android.graphics.C
import android.graphics.M
import android.graphics.P
import android.view.V
public class CompassView extends View implements Runnable
private Paint
= new Paint();
private String
= "正北 0&";
private float
_decDegree = 0;
private Bitmap
private Bitmap
public CompassView(Context context)
super(context);
// 载入图片
= BitmapFactory.decodeResource(getResources(), pass);
= BitmapFactory.decodeResource(getResources(), R.drawable.arrow);
// 开启线程否则无法更新画面
new Thread(this).start();
protected void onDraw(Canvas canvas)
canvas.drawColor(Color.BLACK);
_mPaint.setColor(Color.WHITE);
_mPaint.setTextSize(30);
_mPaint.setFlags(Paint.FAKE_BOLD_TEXT_FLAG);
canvas.drawText(_message, 75, 50, _mPaint);
// 实现图像旋转
Matrix mat = new Matrix();
mat.reset();
mat.setTranslate(15, 100);
mat.preRotate(-_decDegree, 145, 145);
// 绘制图像
canvas.drawBitmap(_compass, mat, _mPaint);
canvas.drawBitmap(_arrow, 152, 73, null);
public void run()
while(!Thread.currentThread().isInterrupted())
Thread.sleep(100);
catch(InterruptedException e)
Thread.currentThread().interrupt();
postInvalidate();
// 更新指南针角度
public void setDegree(float degree)
// 设置灵敏度
if(Math.abs(_decDegree - degree) &= 2 )
_decDegree =
int range = 22;
String degreeStr = String.valueOf(_decDegree);
// 指向正北
if(_decDegree & 360 - range && _decDegree & 360 + range)
_message = "正北 " + degreeStr + "&";
// 指向正东
if(_decDegree & 90 - range && _decDegree & 90 + range)
_message = "正东 " + degreeStr + "&";
// 指向正南
if(_decDegree & 180 - range && _decDegree & 180 + range)
_message = "正南 " + degreeStr + "&";
// 指向正西
if(_decDegree & 270 - range && _decDegree & 270 + range)
_message = "正西 " + degreeStr + "&";
// 指向东北
if(_decDegree & 45 - range && _decDegree & 45 + range)
_message = "东北 " + degreeStr + "&";
// 指向东南
if(_decDegree & 135 - range && _decDegree & 135 + range)
_message = "东南 " + degreeStr + "&";
// 指向西南
if(_decDegree & 225 - range && _decDegree & 225 + range)
_message = "西南 " + degreeStr + "&";
// 指向西北
if(_decDegree & 315 - range && _decDegree & 315 + range)
_message = "西北 " + degreeStr + "&";
// 更新指示信息
public void setMessage(String message)
_message =
&MyCompass.java
package com.
import java.util.L
import android.app.A
import android.hardware.S
import android.hardware.SensorE
import android.hardware.SensorEventL
import android.hardware.SensorM
import android.os.B
public class MyCompass extends Activity
implements SensorEventListener
private CompassView
private boolean
mRegisteredS
//定义SensorManager
private SensorManager
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
_compassView = new CompassView(this);
setContentView(_compassView);
mRegisteredSensor =
//取得SensorManager实例
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
protected void onResume()
super.onResume();
//接受SensorManager的一个列表(Listener)
//这里我们指定类型为TYPE_ORIENTATION(方向感应器)
List&Sensor& sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);
if (sensors.size() & 0)
Sensor sensor = sensors.get(0);
//注册SensorManager
//this-&接收sensor的实例
//接收传感器类型的列表
//接受的频率
mRegisteredSensor = mSensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_FASTEST);
protected void onPause()
if (mRegisteredSensor)
//如果调用了registerListener
//这里我们需要unregisterListener来卸载/取消注册
mSensorManager.unregisterListener(this);
mRegisteredSensor =
super.onPause();
//当进准度发生改变时
//sensor-&传感器
//accuracy-&精准度
public void onAccuracyChanged(Sensor sensor, int accuracy)
// 当传感器在被改变时触发
public void onSensorChanged(SensorEvent event)
// 接受方向感应器的类型
if (event.sensor.getType() == Sensor.TYPE_ORIENTATION)
// 这里我们可以得到数据,然后根据需要来处理
float x = event.values[SensorManager.DATA_X];
_compassView.setDegree(x);
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:50321次
排名:千里之外
原创:13篇
评论:17条方向传感器 什么是手机的方向传感器?_百度知道
方向传感器 什么是手机的方向传感器?
提问者采纳
例如,屏幕图像可以自动跟着旋转并切换长宽比例,手机只需仰起一定角度即可关闭铃声到目前为止,转动一下手机即可向前或向后跳动一首歌曲、右横;手机俯置即可自动进入铃声静音状态,许多元器件厂商都在开发价廉并且功能强的方向传感器.、更具人性化的特点,使你阅读方便、倒竖,文字或菜单也可以同时旋转.,但功能基本一样、俯状态;手机闹铃响后,而不是通常理解的指南针的功能、左横;听mp3时,安装在手机上用以检测手机本身处于何种方向状态的部件,手机方向传感器是指..手机作为一项具有市场庞大而且长久的产品,虽然原理各不相同,仰。具有方向检测功能的手机具有使用更方便.,手机旋转后。手机方向检测功能可以检测手机处于正竖
提问者评价
我早已经选为最佳答案了。不知为什么没有显示。谢谢1
其他类似问题
您可能关注的推广回答者:
传感器的相关知识
按默认排序
其他1条回答
真高级,我不懂
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁今日论坛第 1 个签到,每日签到可得财富值+2,连续5天签到后再连续签到则每日可得财富值
+4,记得每天都来签到哦~
三星两款新机型内部代号曝光
元件存缺陷 Apple Watch将限制供应
在前不久结束的微软Build大会上,微软操作系统主管Joe Belifore确认Windows 10将按计划在今年夏天发布,但仅限PC版,这意味着我们将不会在夏天看到这款手机操作系统的登场。尽管如此,微软还是向我们泄露了一些有关该系统的信息。据外国媒体NPU报道,他们发现了Windows 10手机版的一些新细节,这些细节预示着Windows 10手机版将采用全新UI。
滚动播报:
多智手机助手
全新WP客户端
站内全文搜索,由百度和塞班合作提供
上一主题:
下一主题:
查看: 10817 | 回复: 30
方向传感器和电子罗盘有什么区别啊??
财富值 167
交易信用 0
原创小红花 0
积分/帖子:151
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
方向传感器和电子罗盘有什么区别啊??
方向传感器和电子罗盘有什么区别啊??
财富值 367
交易信用 0
原创小红花 0
积分/帖子:344
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
N8-00
来自:上海
状态: 离线
不知...等待大虾解答...
财富值 167
交易信用 0
原创小红花 0
积分/帖子:151
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
财富值 4655
交易信用 0
原创小红花 0
皇牌空战X 头号机师
积分/帖子:4605
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
索爱K810 N8
来自:湖北武汉
状态: 离线
路过~~~帮顶!
一代经典F8
财富值 167
交易信用 0
原创小红花 0
积分/帖子:151
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
有高手知道的吗?????
UID 3058683
财富值 1833
交易信用 0
原创小红花 0
积分/帖子:1788
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
好像是一样的吧
一开始感觉没啥用,但看过ip4的cf视频后,感觉很强大,可带替鼠标功能。
财富值 4918
交易信用 0
原创小红花 0
葵,千年不 榍槎眩
积分/帖子:5630
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
nokia X6-00→nokia C7
来自:福建厦门
状态: 离线
不清楚有待考证
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
UID 3058683
财富值 1833
交易信用 0
原创小红花 0
积分/帖子:1788
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
方向传感器应该包括电子罗盘
属于归属关系
财富值 2013
交易信用 0
原创小红花 0
积分/帖子:1515
连续签到天数:1
全部签到天数:190
注册时间:
手机型号:
来自:河南省新乡市
状态: 离线
财富值 687
交易信用 0
原创小红花 0
积分/帖子:689
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
小于等于吧
对人生的期待,在于前方的不可而知,延途中总有遇见或错过的风景…遗憾,无法避免…
财富值 167
交易信用 0
原创小红花 0
积分/帖子:151
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
原理一样吗???
交易信用 0
原创小红花 0
积分/帖子:6
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
方向传感器就是通过加速度传感器来实现的,例如横着播放时,手机树立,屏幕在加速度传感器的作用下会保持播放屏幕水平,而不会随着手机而改变方向。有些手机上一首,或下一首等快进键也是通过加速度传感器实现的。
手机划圆圈,用的是触摸按键或触摸屏技术,前者是根据电容变化,后者是根据屏幕电阻变化来实现的。
& &[电子罗盘]
电子罗盘,也叫数字指南针,是利用地磁场来定北极的一种方法。古代称为罗经,现代利用先进加工工艺生产的磁阻传感器为罗盘的数字化提供了有力的帮助。现在一般有用磁阻传感器和磁通门加工而成的电子罗盘。虽然GPS在导航、定位、测速、定向方面有着广泛的应用,但由于其信号常被地形、地物遮挡,导致精度大大降低,甚至不能使用。尤其在高楼林立城区和植被茂密的林区,GPS信号的有效性仅为60%。并且在静止的情况下,GPS也无法给出航向信息。为弥补这一不足,可以采用组合导航定向的方法。电子罗盘产品正是为满足用户的此类需求而设计的。它可以对GPS信号进行有效补偿,保证导航定向信息100%有效,即使是在GPS信号失锁后也能正常工作,做到“丢星不丢向”。
交易信用 0
原创小红花 0
积分/帖子:165
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
诺基亚5320,诺基亚c6-01
来自:江苏
状态: 离线
楼上说的好,赞一个
财富值 167
交易信用 0
原创小红花 0
积分/帖子:151
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
哦~~~~~一点也不样
UID 9344516
财富值 604
交易信用 0
原创小红花 0
积分/帖子:633
连续签到天数:1
全部签到天数:1
注册时间:
手机型号:
N85,5530xm,N8 4S
状态: 离线
12楼说的好
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
/viewthread.php?tid=&extra=&bbsid=359&page=1&&航海桌面3.51去新闻去下载传感器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢三星9300手机GPS无星方向传感器指南针不动怎么回事?
已有1条答案
你先下载一个硬件测试软件,测试你的手机,然后看看你手机的硬件怎么样。还有,不是gps开了就能定位的,要到空旷的地方试试的。不然定位不了的。 那就好了,到空旷的地方试试,能定位 的。那个指南针只有在定位的时候有用了。如果你不放心的话,你下载一个指南针软件,然后再试试可不可以用。
该内容由系统自动生成
参考价:¥1300.00
主屏尺寸4.8英寸
电池容量2100mAh
主屏分辨率像素
电池类型可拆卸式电池
后置摄像头800万像素
CPU频率1.4GHz
前置摄像头190万像素
CPU类型三星 Exynos
网络类型单卡
名网友点评分数
快速简答--编辑问题发送微博@ZOL问答堂
为什么我的三星9300移动数据打不开了,用的是3G联通卡
没找到想要的答案?那就登录提问吧}

我要回帖

更多关于 开机鼠标不能动 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信