您的位置:首页 > 其它

手电筒之指南针

2015-11-28 16:44 337 查看
首先,要先获取系统服务(SENSOR_SERVICE)返回一个SensorManager 对象

manager = (SensorManager) mContext
.getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
manager = (SensorManager) mContext
.getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
//应用在前台时候注册监听器SensorEventListener

manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);


监听器中的接口

这只是我的项目中需要这样写,如果有需要直接旋转图片的,请略过这一段

float startX=0 ;
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
startX = event.values[0];
invalidate();
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}


设置指南针旋转的图片

/********************************绘制指南针***************/
mBitmap1 = BitmapFactory.decodeResource(getResources(),R.drawable.sd_zhennanzhen_rotato);

Matrix matrix=new Matrix();
matrix.postScale(1f, 1f);
matrix.postRotate(startX);

Bitmap b=Bitmap.createBitmap(mBitmap1, 0, 0, mBitmap1.getWidth(), mBitmap1.getHeight(), matrix, true);
int xb1 =  b.getWidth();
int yb1 =  b.getHeight();
//自定义View中画的图片
canvas.drawBitmap(b, (x - xb1) / 2 + (getWidth() - x) / 2,
(y - yb1) / 2, null);


直接使用Imagveiw图片,在SensorEventListener接口的方法中

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
// x轴的度数
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
System.out.println(">>>>>>>>>>>>" + x);
Animation mAnimation = new RotateAnimation(start, x,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
mAnimation.setDuration(200);

img_view.startAnimation(mAnimation);
start = x;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象 指南针 感应器