




已阅读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()被调用。,pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 审计运营考试题库及答案
- 森林火知识培训课件
- 森林消防危险地形课件
- 梯形面积课件
- 2025年财务分析师招聘面试实战模拟题及案例解读
- 2025年残联就业指导员面试技巧及常见问题解答
- 2025年注册验船师考试(C级船舶检验法律法规)冲刺试题及答案二
- 2025年风电场安全管理高级运维工程师考试重点解析
- 桥梁施工员培训课件
- 2025年计算机二级考试全攻略考试要点与模拟题
- 普通化学无机化合物
- Q-GDW10166.1-2025 输变电工程初步设计内容深度规定第1部分:110(66)kV架空输电线路
- JG/T 503-2016承插型盘扣式钢管支架构件
- 2025年福建省无人驾驶航空器操作控制职业技能大赛(航拍无人机驾驶员)试题(附答案)
- 落户防离职协议书
- 职称评审委托合同协议
- T/SFABA 5-2024食品配料天然度检测
- 铁路团体车票协议书
- 2025年中国高考评价体系深度分析解读课件
- 早产儿低体温管理
- 电梯日管控、周排查、月调度制度及管控清单(附记录表格)2
评论
0/150
提交评论