本文将带您了解关于Android开发中的重力传感器用法实例详解的新内容,同时我们还将为您解释android开发中的重力传感器用法实例详解图的相关知识,另外,我们还将为您提供关于AndroidDialo
本文将带您了解关于Android开发中的重力传感器用法实例详解的新内容,同时我们还将为您解释android开发中的重力传感器用法实例详解图的相关知识,另外,我们还将为您提供关于Android Dialog对话框用法实例详解、Android getevent用法实例详解、Android spinner下垃菜单用法实例详解、android – 方向传感器和加速度传感器之间的差异的实用信息。
本文目录一览:- Android开发中的重力传感器用法实例详解(android开发中的重力传感器用法实例详解图)
- Android Dialog对话框用法实例详解
- Android getevent用法实例详解
- Android spinner下垃菜单用法实例详解
- android – 方向传感器和加速度传感器之间的差异
Android开发中的重力传感器用法实例详解(android开发中的重力传感器用法实例详解图)
本文实例讲述了Android开发中的重力传感器用法。分享给大家供大家参考,具体如下:
重力传感器与方向传感器的开发步骤类似,只要理清了期中的x,y,z的值之后就可以根据他们的变化来进行编程了,首先来看一副图
假设当地的重力加速度值为g
当手机正面朝上的时候,z的值为q,反面朝上的时候,z的值为-g
当手机右侧面朝上的时候,x的值为g,右侧面朝上的时候,x的值为-g
当手机上侧面朝上的时候,y的值为g,y的值为-g
了解了重力传感器中X,Y,Z的含义之后下面我们就开始学习如何使用
首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感器以及创建各种各样的传感器,监听器用来监视传感器的变化并且进行相应的操作
private SensorManager sensorManager; private MySensorEventListener mySensorEventListener; mySensorEventListener= new MySensorEventListener();//这个监听器当然是我们自己定义的,在重力感应器感应到手机位置有变化的时候,我们可以采取相应的操作,这里紧紧是将x,z的值打印出来 private final class MySensorEventListener implements SensorEventListener{ @Override //可以得到传感器实时测量出来的变化值 public void onSensorChanged(SensorEvent event) { //重力传感器 if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ float x = event.values[SensorManager.DATA_X]; float y = event.values[SensorManager.DATA_Y]; float z = event.values[SensorManager.DATA_Z]; //tv_accelerometer是界面上的一个TextView标签,不再赘述 tv_orientation.setText("Orientation:"+x+","+y+","+z); } }
我们在onResume()
方法中创建重力传感器,并向系统注册监听器
protected void onResume() { Sensor sensor_accelerometer=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(mySensorEventListener,sensor_accelerometer,SensorManager.SENSOR_DELAY_UI); super.onResume(); }
最后我们在onPause()
中注销所有传感器的监听,释放重力感应器资源!
protected void onPause() { //注销所有传感器的监听 sensorManager.unregisterListener(mySensorEventListener); super.onPause(); }
到此,有关重力传感器的介绍完毕!
接下来看一个Android用重力传感器做横竖屏切换的例子
在播放视频的时候,可能要做横竖屏的切换,但是,用户可以设置自己的手机关掉屏幕旋转,这个时候就需要想其他的办法了,比如:重力传感器。
public class ScreenSwitchUtils { private static final String TAG = ScreenSwitchUtils.class.getSimpleName(); private volatile static ScreenSwitchUtils mInstance; private Activity mActivity; // 是否是竖屏 private boolean isPortrait = true; private SensorManager sm; private OrientationSensorListener listener; private Sensor sensor; private SensorManager sm1; private Sensor sensor1; private OrientationSensorListener1 listener1; private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 888: int orientation = msg.arg1; if (orientation > 45 && orientation < 135) { } else if (orientation > 135 && orientation < 225) { } else if (orientation > 225 && orientation < 315) { if (isPortrait) { Log.e(test,切换成横屏); mActivity.setRequestedOrientation(0); isPortrait = false; } } else if ((orientation > 315 && orientation < 360) || (orientation > 0 && orientation < 45)) { if (!isPortrait) { Log.e(test,切换成竖屏); mActivity.setRequestedOrientation(1); isPortrait = true; } } break; default: break; } }; }; /** 返回ScreenSwitchUtils单例 **/ public static ScreenSwitchUtils init(Context context) { if (mInstance == null) { synchronized (ScreenSwitchUtils.class) { if (mInstance == null) { mInstance = new ScreenSwitchUtils(context); } } } return mInstance; } private ScreenSwitchUtils(Context context) { Log.d(TAG,init orientation listener.); // 注册重力感应器,监听屏幕旋转 sm = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); listener = new OrientationSensorListener(mHandler); // 根据 旋转之后/点击全屏之后 两者方向一致,激活sm. sm1 = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); sensor1 = sm1.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); listener1 = new OrientationSensorListener1(); } /** 开始监听 */ public void start(Activity activity) { Log.d(TAG,start orientation listener.); mActivity = activity; sm.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_UI); } /** 停止监听 */ public void stop() { Log.d(TAG,stop orientation listener.); sm.unregisterListener(listener); sm1.unregisterListener(listener1); } /** * 手动横竖屏切换方向 */ public void toggleScreen() { sm.unregisterListener(listener); sm1.registerListener(listener1,sensor1,SensorManager.SENSOR_DELAY_UI); if (isPortrait) { isPortrait = false; // 切换成横屏 mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } else { isPortrait = true; // 切换成竖屏 mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } public boolean isPortrait(){ return this.isPortrait; } /** * 重力感应监听者 */ public class OrientationSensorListener implements SensorEventListener { private static final int _DATA_X = 0; private static final int _DATA_Y = 1; private static final int _DATA_Z = 2; public static final int ORIENTATION_UNKNowN = -1; private Handler rotateHandler; public OrientationSensorListener(Handler handler) { rotateHandler = handler; } public void onAccuracyChanged(Sensor arg0,int arg1) { } public void onSensorChanged(SensorEvent event) { float[] values = event.values; int orientation = ORIENTATION_UNKNowN; float X = -values[_DATA_X]; float Y = -values[_DATA_Y]; float Z = -values[_DATA_Z]; float magnitude = X * X + Y * Y; // Don't trust the angle if the magnitude is small compared to the y // value if (magnitude * 4 >= Z * Z) { // 屏幕旋转时 float OneEightyOverPi = 57.29577957855f; float angle = (float) Math.atan2(-Y,X) * OneEightyOverPi; orientation = 90 - (int) Math.round(angle); // normalize to 0 - 359 range while (orientation >= 360) { orientation -= 360; } while (orientation < 0) { orientation += 360; } } if (rotateHandler != null) { rotateHandler.obtainMessage(888,orientation,0).sendToTarget(); } } } public class OrientationSensorListener1 implements SensorEventListener { private static final int _DATA_X = 0; private static final int _DATA_Y = 1; private static final int _DATA_Z = 2; public static final int ORIENTATION_UNKNowN = -1; public OrientationSensorListener1() { } public void onAccuracyChanged(Sensor arg0,X) * OneEightyOverPi; orientation = 90 - (int) Math.round(angle); // normalize to 0 - 359 range while (orientation >= 360) { orientation -= 360; } while (orientation < 0) { orientation += 360; } } if (orientation > 225 && orientation < 315) {// 检测到当前实际是横屏 if (!isPortrait) { sm.registerListener(listener,SensorManager.SENSOR_DELAY_UI); sm1.unregisterListener(listener1); } } else if ((orientation > 315 && orientation < 360) || (orientation > 0 && orientation < 45)) {// 检测到当前实际是竖屏 if (isPortrait) { sm.registerListener(listener,SensorManager.SENSOR_DELAY_UI); sm1.unregisterListener(listener1); } } } } }
使用的时候:
public class MainActivity extends Activity implements OnClickListener { private ScreenSwitchUtils instance; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); instance = ScreenSwitchUtils.init(this.getApplicationContext()); } @Override protected void onStart() { super.onStart(); instance.start(this); } @Override protected void onStop() { super.onStop(); instance.stop(); } @SuppressLint(NewApi) @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.e(test,onConfigurationChanged); if (instance.isPortrait()) { // 切换成竖屏 LayoutParams params1 = new RelativeLayout.LayoutParams(screenWidth,DensityUtil.dip2px(this,160)); videoView.setLayoutParams(params1); Toast.makeText(getApplicationContext(),竖屏,0).show(); Log.e(test,竖屏); } else { // 切换成横屏 LayoutParams params1 = new RelativeLayout.LayoutParams(screenHeight,screenWidth); videoView.setLayoutParams(params1); Toast.makeText(getApplicationContext(),横屏,横屏); } } @Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.iv_stretch: instance.toggleScreen(); break; } } }
调用了activity.setRequestedOrientation()
以后,会触发activity.onConfigurationChanged();
可以在这里面重新设置播放界面的大小。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
Android Dialog对话框用法实例详解
本文实例讲述了Android Dialog对话框用法。分享给大家供大家参考,具体如下:
Activities提供了一种方便管理的创建、保存、回复的对话框机制,例如 onCreateDialog(int),onPrepareDialog(int,Dialog),showDialog(int),dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getownerActivity()方法返回该Activity管理的对话框(dialog).
1. onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Activity为每个对话框的所有者,从而自动管理每个对话框的状态并挂靠到Activity上。这样,每个对话框继承这个Activity的特定属性。比如,当一个对话框打开时,菜单键显示为这个Activity定义的选项菜单,音量键修改Activity使用的音频流。
2. showDialog(int): 当你想要显示一个对话框时,调用showDialog(int id) 方法并传递一个唯一标识这个对话框的整数。当对话框第一次被请求时,Android从你的Activity中调用onCreateDialog(int id),你应该在这里初始化这个对话框Dialog。这个回调方法被传以和showDialog(int id)相同的ID。当你创建这个对话框后,在Activity的最后返回这个对象。
3. onPrepareDialog(int,Dialog):在对话框被显示之前,Android还调用了可选的回调函数onPrepareDialog(int id,Dialog). 如果你想在每一次对话框被打开时改变它的任何属性,你可以定义这个方法。这个方法在每次打开对话框时被调用,而onCreateDialog(int) 仅在对话框第一次打开时被调用。如果你不定义onPrepareDialog(),那么这个对话框将保持和上次打开时一样。这个方法也被传递以对话框的ID,和在onCreateDialog()中创建的对话框对象。
4. dismissDialog(int):当你准备关闭对话框时,你可以通过对这个对话框调用dismiss()来消除它。如果需要,你还可以从这个Activity中调用dismissDialog(int id) 方法,这实际上将为你对这个对话框调用dismiss() 方法。 如果你想使用onCreateDialog(int id) 方法来管理你对话框的状态(就如同在前面的章节讨论的那样),然后每次你的对话框消除的时候,这个对话框对象的状态将由该Activity保留。如果你决定不再需要这个对象或者清除该状态是重要的,那么你应该调用removeDialog(int id)。这将删除任何内部对象引用而且如果这个对话框正在显示,它将被消除。
使用方法一:当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式
protected void dialog() { AlertDialog.Builder builder = new Builder(Main.this); builder.setMessage("确认退出吗?"); builder.setTitle("提示"); builder.setPositiveButton("确认",new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { dialog.dismiss(); Main.this.finish(); } }); builder.setNegativeButton("取消",int which) { dialog.dismiss(); } }); builder.create().show(); }
在onKeyDown(int keyCode,KeyEvent event)方法中调用此方法
public boolean onKeyDown(int keyCode,KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { dialog(); } return false; }
使用方法二:改变对话框的图表,添加了三个按钮
Dialog dialog = new AlertDialog.Builder(this) .setIcon( android.R.drawable.btn_star) .setTitle("喜好调查") .setMessage("你喜欢李连杰的电影吗?") .setPositiveButton("很喜欢",new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { // Todo Auto-generated method stub Toast.makeText(Main.this,"我很喜欢他的电影。",Toast.LENGTH_LONG).show(); } }) .setNegativeButton("不喜欢",int which) { // Todo Auto-generated method stub Toast.makeText(Main.this,"我不喜欢他的电影。",Toast.LENGTH_LONG).show(); } }) .setNeutralButton("一般",new OnClickListener() { @Override public void onClick(DialogInterface dialog,"谈不上喜欢不喜欢。",Toast.LENGTH_LONG).show(); } }) .create(); dialog.show();
使用方法三:信息内容是一个简单的View类型
new AlertDialog.Builder(this) .setTitle("请输入") .setIcon(android.R.drawable.ic_dialog_info) .setView(new EditText(this)) .setPositiveButton("确定",null) .setNegativeButton("取消",null) .show();
使用方法四:信息内容是一组单选框
new AlertDialog.Builder(this) .setTitle("复选框") .setMultiChoiceItems(new String[] { "Item1","Item2" },null,null) .setPositiveButton("确定",null) .show();
使用方法五:信息内容是一组多选框
new AlertDialog.Builder(this) .setTitle("单选框") .setIcon(android.R.drawable.ic_dialog_info) .setSingleChoiceItems(new String[] { "Item1",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { dialog.dismiss(); } }) .setNegativeButton("取消",null).show();
使用方法六:信息内容是一组简单列表项
new AlertDialog.Builder(this) .setTitle("列表框") .setItems(new String[] { "Item1",null) .setNegativeButton("确定",null) .show();
使用方法七:信息内容是一个自定义的布局
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ffffffff" android:orientation="horizontal" > <TextView android:id="@+id/tvname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名:" /> <EditText android:id="@+id/etname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="100dip" /> </LinearLayout>
调用代码:
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.dialog,(ViewGroup) findViewById(R.id.dialog)); new AlertDialog.Builder(this) .setTitle("自定义布局") .setView(layout) .setPositiveButton("确定",null) .show();
使用方法七:fragment中的使用方法,只显示确认按钮
new AlertDialog.Builder(getActivity()) .setMessage(m) .setPositiveButton("确定",new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialoginterface,int i){} }) .show();
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android编程之activity操作技巧总结》、《Android资源操作技巧汇总》、《Android文件操作技巧汇总》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
Android getevent用法实例详解
Android getevent用法实例详解
最近在测试设备按键的常用命令,感觉这些命令都有的,但就是不知道怎么查找。
翻阅了几篇博文,才发现有一个getevent,就是指这样的命令.
首先需要说明的是getevent命令后面可以带上具体的input设备,列如getevent /dev/iput/event0,这样可以过滤掉一些不用显示的input的设备.
我在之前的使用中,还是有些找不到点子,也是一步一步使用起来的。
首先看-p 选项,-p选项用于输出input设备相关的一些信息,列如,getevent -p /dev/input/event0:
add device 1 : /dev/input/event0: name: “radio_key” events: KEY (0001): 0043 0044 0057 0058 input props:
那么-i 选项,同-p 选项差不多,只是显示的信息更丰富,getevent -i /dev/input/event0:
add device 1: /dev/input/event0 bus: 0000 vendor 0000 product 0000 version 0000 name: “radio_key” location: “” id: “” version: 1.0.1 events: KEY (0001): 0043 0044 0057 0058 input props:
对于-p或-i选项呢,可以帮助我们判断input设备是否已经注册成功.
再来看-l选项,我们首先不加-l选项来看看,输入getevent /dev/input/event7命令,注event7是触摸屏的input设备:
0001 014a 00000001 0003 0030 000000ff 0003 0035 00000262 0003 0036 00000546 0003 0039 00000011 0000 0002 00000000 0000 0000 00000000 0001 014a 00000000 0000 0002 00000000 0000 0000 00000000
看到了吗,得到的是这样一组信息,只看数字的话,也不知道具体的含义,那么如果加上-l选项呢,getevent -l /dev/input/event7:
EV_KEY BTN_TOUCH DOWN EV_ABS ABS_MT_TOUCH_MAJOR 000000ff EV_ABS ABS_MT_POSITION_X 00000262 EV_ABS ABS_MT_POSITION_Y 00000546 EV_ABS ABS_MT_TRACKING_ID 00000011 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000 EV_KEY BTN_TOUCH UP EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000
我们看,这样就容易明白多了,格式是event type、event code、event value,至于这些所代表的含义可以参考input设备相关的东西。
来看-r选项,-r选项可以输出输入报告的速率,例如getevent -r /dev/input/event7:
0000 0000 00000000 rate 83 0003 0030 0000004d 0003 0035 0000024e 0003 0036 00000364 0003 0039 00000000 0000 0002 00000000 0000 0000 00000000 rate 83 0003 0030 0000004c 0003 0035 0000024f 0003 0036 00000364 0003 0039 00000000 0000 0002 00000000 0000 0000 00000000 rate 83
使用这个选项可以帮助我们检测输入报告的速率是否满足我们的要求,例如检测tp报点速率。
关于getevent命令选项大概就介绍这几个,其他的用法可以参考上面的getevent命令用法,另外,这些命令选项都是可以组合使用的,例如getevent -lr /dev/input/event7。
我是在检测设备按键时,觉得物理键指令无法找到,才发现这些命令。
与getevent相对应的是sendevent命令,但是sendevent命令输入稍显复杂,可以使用另外一个命令input来代替。例如,输入input keyevent KEYCODE_POWER表示按下一次power按键。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
Android spinner下垃菜单用法实例详解
本文实例讲述了Android spinner下垃菜单用法。分享给大家供大家参考,具体如下:
一、使用数组作为数据源
1. 在layout布局文件:声明一个TextView控件和一个Spinner控件,代码如下
<Spinner android:id="@+id/Spinner01" android:layout_width="fill_parent" android:layout_height="wrap_content"></Spinner>
2. 在Activity文件加入以下代码
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class SpinnerActivity extends Activity { private static final String[] m={"A型","B型","O型","AB型","其他"}; private TextView view ; private Spinner spinner; private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { // Todo Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.spinner); view = (TextView) findViewById(R.id.spinnerText); spinner = (Spinner) findViewById(R.id.Spinner01); //将可选内容与ArrayAdapter连接起来 adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m); //设置下拉列表的风格 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //将adapter 添加到spinner中 spinner.setAdapter(adapter); //添加事件Spinner事件监听 spinner.setonItemSelectedListener(new SpinnerSelectedListener()); //设置默认值 spinner.setVisibility(View.VISIBLE); } //使用数组形式操作 class SpinnerSelectedListener implements OnItemSelectedListener{ public void onItemSelected(AdapterView<?> arg0,View arg1,int arg2,long arg3) { view.setText("你的血型是:"+m[arg2]); } public void onnothingSelected(AdapterView<?> arg0) { } } }
二、使用XML作为数据源
1. 在values文件夹下新建一个arryas.xml文件:代码如下
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="plantes"> <item>NOKIA</item> <item>MOTO</item> <item>HTC</item> <item>LG</item> <item>其他</item> </string-array> </resources>
2. 在Activity文件加入以下代码
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class SpinnerActivity extends Activity { private TextView view2; private Spinner spinner2; private ArrayAdapter adapter2; @Override protected void onCreate(Bundle savedInstanceState) { // Todo Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.spinner); spinner2 = (Spinner) findViewById(R.id.spinner02); view2 = (TextView) findViewById(R.id.spinnerText02); //将可选内容与ArrayAdapter连接起来 adapter2 = ArrayAdapter.createFromresource(this,R.array.plantes,android.R.layout.simple_spinner_item); //设置下拉列表的风格 adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //将adapter2 添加到spinner中 spinner2.setAdapter(adapter2); //添加事件Spinner事件监听 spinner2.setonItemSelectedListener(new SpinnerXMLSelectedListener()); //设置默认值 spinner2.setVisibility(View.VISIBLE); } //使用XML形式操作 class SpinnerXMLSelectedListener implements OnItemSelectedListener{ public void onItemSelected(AdapterView<?> arg0,long arg3) { view2.setText("你使用什么样的手机:"+adapter2.getItem(arg2)); } public void onnothingSelected(AdapterView<?> arg0) { } } }
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android编程之activity操作技巧总结》、《Android资源操作技巧汇总》、《Android文件操作技巧汇总》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
android – 方向传感器和加速度传感器之间的差异
根据我的理解,两者都符合我的要求.我找不到它们之间的区别.任何人都可以根据我的目标详细了解他们.我应该使用哪种传感器?
解决方法
加速度计检测空间加速度.它总是向下检测到9.8m / s ^ 2的加速度的原因是因为重力等于空间加速度.
方向检测设备的轴是否从现实世界中旋转;它可以检测磁北方的倾斜度和度数.请注意,此传感器已弃用,Google建议您使用加速度计和磁力计来计算方向.
关于Android开发中的重力传感器用法实例详解和android开发中的重力传感器用法实例详解图的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android Dialog对话框用法实例详解、Android getevent用法实例详解、Android spinner下垃菜单用法实例详解、android – 方向传感器和加速度传感器之间的差异等相关知识的信息别忘了在本站进行查找喔。
本文标签: