




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android课程讲义,智能手机开发,7、硬件访问,智能手机开发,2010.06.,.,3,HardwareAPIs,电话提供与电话有关的功能调用。多媒体播放音频、视频播放相机拍照与视频录像可扩展硬件传感器加速度仪与指南针APIs控制方向与运动通讯有关的程序库蓝牙、网络、Wi-Fi等,2010.06.,.,4,音频采集,你可以使用手机进行现场录音,实现步骤如下:第一步:在功能清单文件AndroidManifest.xml中添加音频刻录权限:,2010.06.,.,5,音频采集,第二步:编写音频刻录代码:,MediaRecorderrecorder=newMediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);/从麦克风采集声音recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);/内容输出格式recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);/音频编码方式recorder.setOutputFile(/sdcard/itcast.amr);recorder.prepare();/预期准备recorder.start();/开始刻录.recorder.stop();/停止刻录recorder.reset();/重设recorder.release();/刻录完成一定要释放资源,2010.06.,.,6,音乐播放,第二步:编写音频刻录代码:,MediaPlayermediaPlayer=newMediaPlayer();if(mediaPlayer.isPlaying()mediaPlayer.reset();/重置为初始状态mediaPlayer.setDataSource(/sdcard/god.mp3);mediaPlayer.prepare();/缓冲mediaPlayer.start();/开始或恢复播放mediaPlayer.pause();/暂停播放mediaPlayer.start();/恢复播放mediaPlayer.stop();/停止播放mediaPlayer.release();/释放资源mediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener()/播出完毕事件OverridepublicvoidonCompletion(MediaPlayerarg0)mediaPlayer.release(););mediaPlayer.setOnErrorListener(newMediaPlayer.OnErrorListener()/错误处理事件OverridepublicbooleanonError(MediaPlayerplayer,intarg1,intarg2)mediaPlayer.release();returnfalse;);,2010.06.,.,7,Camera相机,使用硬件,应该有相应允许。文件AndroidManifest添加:Camera类通过调用Camera.open()返回Camera对象。,/打开摄像头,获得Camera对象camera=Camera.open();,2010.06.,.,8,Camera,使用CameraPreview通过底层引擎更新画面。调用Camera.release()释放资源,try/设置显示camera.setPreviewDisplay(holder);catch(IOExceptionexception)camera.release();/释放资源camera=null;,2010.06.,.,9,拍摄照片takePicture,第一个参数:在图像被捕获时回调,通常通过音效表明拍摄成功。第二个参数:图片原始数据通过byte传入回调方法。可以忽略。第三个参数:生成JPEG格式图片数据时被调用,JPEG数据通过byte传入回调方法。,/拍摄照片camera.takePicture(shutterCallback,null,jpegCallback);,2010.06.,.,10,JPEG格式数据处理,将图片存盘save(),并通过发送Intent启动内置程序显示图片。,/返回照片的JPEG格式的数据privatePictureCallbackjpegCallback=newPictureCallback()publicvoidonPictureTaken(bytedata,Cameracamera)Parametersps=camera.getParameters();if(ps.getPictureFormat()=PixelFormat.JPEG)/存储拍照获得的图片Stringpath=save(data);/将图片交给Image程序处理Uriuri=Uri.fromFile(newFile(path);Intentintent=newIntent();intent.setAction(ent.action.VIEW);intent.setDataAndType(uri,image/jpeg);startActivity(intent);,2010.06.,.,11,保存图像,privateStringsave(bytedata)Stringpath=/sdcard/+System.currentTimeMillis()+.jpg;try/判断SD卡上是否有足够的空间Stringstorage=Environment.getExternalStorageDirectory().toString();StatFsfs=newStatFs(storage);longavailable=fs.getAvailableBlocks()*fs.getBlockSize();if(availabledata.length)returnnull;/空间不足直接返回空Filefile=newFile(path);if(!file.exists()file.createNewFile();/创建文件FileOutputStreamfos=newFileOutputStream(file);fos.write(data);fos.close();catch(Exceptione)e.printStackTrace();returnnull;returnpath;,2010.06.,.,12,LocationManager,LocationProvider类GPS:使用GPS模块定位AGPS:使用移动电话网络蜂窝技术定位,/拍摄照片locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);Listproviders=locationManager.getAllProviders();for(Stringp:providers)/处理Provider,2010.06.,.,13,查询最佳LocationProvider,Criteria类选择最佳电源、精确度、方位、速度、高度,PrivateStringfindProvider()Criteriacriteria=newCriteria();criteria.setAccuracy(Criteria.ACCURACY_COARSE);criteria.setPowerRequirement(Criteria.POWER_LOW);criteria.setAlititudeRequired(false);/criteria.setBearingRequired(false);/criteria.setSpeedRequired(false);/速度criteria.setCostAllowed(true);/returnlocationManager.getBestProvider(criteria,ture);,2010.06.,.,14,获取位置信息,getLastKnownLocation()获得设备记录的最后位置requestLocationUpdate(Stringprovider,longminTime,floatminDistance,LocationListenerlistener)minTime:回调时间间隔floatminDistance:回调距离间隔,locationManager.requestLocationUpdate(locationManager.AGPS_PROVIDER,60000,10,newLocationListener()publicvoidonLocationChanged(Locationlocation)/更新位置,2010.06.,.,15,位置警报,addProximityAlert(doublelatitude,doublelongitude,floatradius,longexpiration,PendingIntentintent)radius:警报半径expiration:警报时间,-1则永不过期intent:由警报触发,以广播形式发出可创建BroadcastReceiver,并注册相关应用,以响应警报事件,2010.06.,.,16,SensorManager,手机上有多种传感器,是手机的一个特色。多种传感器可作为各应用系统的输入或其它控制之用,使手机的应用别于PC,也更有趣。常见有:重力传感器加速度传感器亮度传感器距离传感器。,2010.06.,.,17,SensorManager,SensorManager是传感器框架核心,调用Context.getSystemService获得SensorManager对象。,/创建SensorManager对象sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);,2010.06.,.,18,SensorManager,负责管理设备上可用传感器,支持多种传感器TYPE_ALLTYPE_ACCELEROMETERTYPE_GYROSCOPETYPE_LIGHTTYPE_MAGNETIC_FIELDTYPE_ORIENTATIONTYPE_PRESSURETYPE_PROXIMITYTYPE_TEMPERATURE,2010.06.,.,19,监听传感器事件,registerListener当传感器发生变化时,onSensorChanged()被调用。,/监听设备变化sensorManager.registerListener(SensorEventListenerlistener,Sensorsensor,intrate,Handlerhandler);,/监听设备变化sensorManager.registerListener(SensorEventListenerlistener,Sensorsensor,intrate);,2010.06.,.,20,SensorListener,当传感器变化时,onSensorChanged()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职务发明人离职后知识产权转移与保密约束协议
- 个性化定制私人商铺租赁与营销策划合同
- 离异父母子女抚养权调整及财产权益保障合同
- 离婚协议书范本及子女抚养权及探望权保证协议
- 离婚财产分割协议:房产、车辆及现金明细协议
- 快乐足球绘画课件
- 修身养心的课件
- 小学唱脸谱课件
- 采购流程培训课件
- 旅游技术技能测试题及答案
- 1.1 常见的植物(教学课件)科学青岛版二年级上册(新教材)
- 企业科技创新管理办法
- 2025年人教部编版小学三年级语文上册全册单元测试题及答案(全套)
- GB/T 24600-2009城镇污水处理厂污泥处置土地改良用泥质
- GB/T 1839-2008钢产品镀锌层质量试验方法
- 检验科标本采集手册
- 07FD02防空地下室电气设备安装图集
- 矿产资源定量预测与评价新进展课件
- 闽教版(2020修订版)信息技术-四年级上册教学计划
- DB32-T 3434-2018人民防空核生化监测中心工程设计规范-(高清现行)
- DB32∕T 2882-2016 城市轨道交通桥隧结构养护技术规程
评论
0/150
提交评论