ANDROID课程讲义---手机特色功能手机特色功能重点内容系统设置Configuration传感器语音识别桌面组件系统设置CONFIGURATION系统的设置变化对应用程产生影响朝向、导航等Configuration类封装了所有的设置信息android.content.res下Orientation:ORIENTATION_LANDSCAPE,ORIENTATION_PORTRAIT,ORIENTATION_SQUAREKeyboard:KEYBOARD_NOKEYS,KEYBOARD_QWERTY,KEYBOARD_12KEYNavigation:NAVIGATION_NONAV,NAVIGATION_DPAD,NAVIGATION_TRACKBALL,NAVIGATION_WHEELTouchscreen:TOUCHSCREEN_NOTOUCH,TOUCHSCREEN_STYLUS,TOUCHSCREEN_FINGERAcitivity的onConfigurationChanged方法响应系统设置变化系统设置-实例1通过按钮设置屏幕方式,并显示屏幕设置属性if(Sample_12_1.this.getRequestedOrientation()==-1){Toast.makeText(Sample_12_1.this,无法获取!!,Toast.LENGTH_LONG).show();}else{if(Sample_12_1.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){Sample_12_1.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}elseif(Sample_12_1.this.getRequestedOrientation()==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){Sample_12_1.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}系统设置-实例1属性发生变化,系统自动调用onConfigurationChanged()方法@OverridepublicvoidonConfigurationChanged(ConfigurationnewConfig){Toast.makeText(this,系统的屏幕方向发生改变,Toast.LENGTH_LONG).show();updateEditText();//更新EditText显示的内容super.onConfigurationChanged(newConfig);}系统设置-实例1更改文本显示publicvoidupdateEditText(){into=getRequestedOrientation();//获取屏幕朝向switch(o){//判断屏幕当前朝向caseActivityInfo.SCREEN_ORIENTATION_PORTRAIT:et.setText(当前屏幕朝向为:PORTRAIT);break;caseActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:et.setText(当前屏幕朝向为:LANDSCAPE);break;}系统设置-实例2设置手机背景图片组保存方式(标准方式)int[]imgIds={//图片资源的id数组R.drawable.w1,R.drawable.w2,R.drawable.w3,R.drawable.w4};intselectedIndex=-1;//被选中的图片在id数组中的索引系统设置-实例2设置手机背景获得图片资源,使用设置函数Resourcesr=Sample_12_2.this.getResources();//获得Resources对象InputStreamin=r.openRawResource(imgIds[selectedIndex]);//获得InputStream对象try{setWallpaper(in);//设置墙纸}catch(IOExceptione){e.printStackTrace();}图片的显示和选择,可采用Galllery控件。系统设置-实例3手机震动功能主要应用的方法和属性Vibratorvibrator;//声明一个Vibrator对象vibrator=(Vibrator)getSystemService(Service.VIBRATOR_SERVICE);//创建Vibrator对象vibrator.vibrate(newlong[]{1000,50,50,100,50},-1);//启动振动vibrator.cancel();//关闭振动vibrator.vibrate(2500);//启动振动课上实验:设计界面,利用一个按钮打开或关闭震动。震动的时间随机。系统设置-实例4获得手机SIM信息tm=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);ArrayListStringlistValues=newArrayListString();listValues.add(tm.getDeviceId());//获取设备编号listValues.add(tm.getSimCountryIso());//获取SIM卡国别listValues.add(tm.getSimSerialNumber());//获取SIM卡序列号listValues.add(simState[tm.getSimState()]);//获取SIM卡状态listValues.add((tm.getDeviceSoftwareVersion()==null?tm.getDeviceSoftwareVersion():未知));//获取软件版本listValues.add(tm.getNetworkOperator());//获取网络运营商代号listValues.add(tm.getNetworkOperatorName());//获取网络运营商名称listValues.add(phoneType[tm.getPhoneType()]);//获取手机制式listValues.add(tm.getCellLocation().toString());//获取设备当前位置其他的系统属性设置电池电量IntentFilterfilter=newIntentFilter(Intent.ACTION_BATTERY_CHANGED);registerReceiver(mbr,filter);//注册BroadcastReceiver//在其中处理Intent获得电量信息intcurrent=intent.getExtras().getInt(level);//获得当前电量inttotal=intent.getExtras().getInt(scale);//获得总电量音量调节AudioManageram;//声明AudioManager对象am.setStreamMute(AudioManager.STREAM_MUSIC,!isChecked);//设置是否静音am.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,AudioManager.FLAG_SHOW_UI);//调高声音传感器种类加速度传感器(accelerometer),陀螺仪(gyroscope),环境光照传感器(light),磁力传感器(magneticfield),方向传感器(orientation),压力传感器(pressure),距离传感器(proximity),温度传感器(temperature)。采样率最快、游戏、普通、用户界面。当应用程序请求特定的采样率时,其实只是对传感器子系统的一个提示,或者一个建议。不保证特定的采样率可用。准确性高、低、中、不可靠。传感器传感器类型常量传感器类型常量内部整数值中文名称Sensor.TYPE_ACCELEROMETER1加速度传感器Sensor.TYPE_MAGNETIC_FIELD2磁力传感器Sensor.TYPE_ORIENTATION3方向传感器Sensor.TYPE_GYROSCOPE4陀螺仪传感器Sensor.TYPE_LIGHT5环境光照传感器Sensor.TYPE_PRESSURE6压力传感器Sensor.TYPE_TEMPERATURE7温度传感器Sensor.TYPE_PROXIMITY8距离传感器传感器传感器管理Android所有的传感器都归传感器管理器SensorManager管理,获取传感器管理器的方法很简单:Stringservice_name=Context.SENSOR_SERVICE;SensorManagersensorManager=(SensorManager)getSystemService(service_name);SensordefaultGyroscope=sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);传感器获得传感器从传感器管理器中获取其中某个或者某些传感器的方法有如下三种:第一种:获取某种传感器的默认传感器SensordefaultGyroscope=sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);第二种:获取某种传感器的列表ListSensorpressureSensors=sensorManager.getSensorList(Sensor.TYPE_PRESSURE);第三种:获取所有传感器的列表ListSensorallSensors=sensorManager.getSensorList(Sensor.TYPE_ALL);传感器获取传感器参数方法描述getMaximumRange()最大取值范围getName()设备名称getPower()功率getResolution()精度getType()传感器类型getVentor()设备供应商getVersion()设备版本号传感器获取手机传感器清单main.xml?xmlversion=1.0encoding=utf-8?LINEARLAYOUTxmlns:android=:orientation=verticalandroid:layout_width=fill_parentandroid:layout_height=fill_parentTEXTVIEWandroid:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:id=@+id/TextView01android:text=//LINEARLAYOUT传感器获取手机传感器清单//从系统服务中获得传感器管理器SensorManagersm=(SensorManager)getSystemService(Context.SENSOR_SERVICE);//从传感器管理器中获得全部的传感器列表ListSENSORallSensors=sm.getSensorList(Sensor.TYPE_ALL);//显示有多少个传感器tx1.setText(该手机有+allSens