您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 手机/mobile开发 > Android教程07-硬件访问
浙江大学软硬件协同设计实验室课程讲义智能手机开发浙江大学软硬件协同设计实验室、硬件访问智能手机开发浙江大学软硬件协同设计实验室浙江大学计算机学院3HardwareAPIs电话提供与电话有关的功能调用。多媒体播放音频、视频播放相机拍照与视频录像可扩展硬件传感器加速度仪与指南针APIs控制方向与运动通讯有关的程序库蓝牙、网络、Wi-Fi等浙江大学软硬件协同设计实验室浙江大学计算机学院4音频采集你可以使用手机进行现场录音,实现步骤如下:第一步:在功能清单文件AndroidManifest.xml中添加音频刻录权限:uses-permissionandroid:name=android.permission.RECORD_AUDIO/浙江大学软硬件协同设计实验室浙江大学计算机学院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();//刻录完成一定要释放资源浙江大学软硬件协同设计实验室浙江大学计算机学院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;}});浙江大学软硬件协同设计实验室浙江大学计算机学院7Camera相机使用硬件,应该有相应允许。文件AndroidManifest添加:Camera类通过调用Camera.open()返回Camera对象。//打开摄像头,获得Camera对象camera=Camera.open();uses-permissionandroid:name=android.permission.CAMERA/浙江大学软硬件协同设计实验室浙江大学计算机学院8Camera使用CameraPreview通过底层引擎更新画面。调用Camera.release()释放资源try{//设置显示camera.setPreviewDisplay(holder);}catch(IOExceptionexception){camera.release();//释放资源camera=null;}浙江大学软硬件协同设计实验室浙江大学计算机学院9拍摄照片takePicture第一个参数:在图像被捕获时回调,通常通过音效表明拍摄成功。第二个参数:图片原始数据通过byte[]传入回调方法。可以忽略。第三个参数:生成JPEG格式图片数据时被调用,JPEG数据通过byte[]传入回调方法。//拍摄照片camera.takePicture(shutterCallback,null,jpegCallback);浙江大学软硬件协同设计实验室浙江大学计算机学院10JPEG格式数据处理将图片存盘save(),并通过发送Intent启动内置程序显示图片。//返回照片的JPEG格式的数据privatePictureCallbackjpegCallback=newPictureCallback(){publicvoidonPictureTaken(byte[]data,Cameracamera){Parametersps=camera.getParameters();if(ps.getPictureFormat()==PixelFormat.JPEG){//存储拍照获得的图片Stringpath=save(data);//将图片交给Image程序处理Uriuri=Uri.fromFile(newFile(path));Intentintent=newIntent();intent.setAction(android.intent.action.VIEW);intent.setDataAndType(uri,image/jpeg);startActivity(intent);}}};浙江大学软硬件协同设计实验室浙江大学计算机学院11保存图像privateStringsave(byte[]data){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;}浙江大学软硬件协同设计实验室浙江大学计算机学院12LocationManagerLocationProvider类GPS:使用GPS模块定位AGPS:使用移动电话网络蜂窝技术定位//拍摄照片locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);ListStringproviders=locationManager.getAllProviders();for(Stringp:providers){//处理Provider}浙江大学软硬件协同设计实验室浙江大学计算机学院13查询最佳LocationProviderCriteria类选择最佳电源、精确度、方位、速度、高度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);}浙江大学软硬件协同设计实验室浙江大学计算机学院14获取位置信息getLastKnownLocation()获得设备记录的最后位置requestLocationUpdate(Stringprovider,longminTime,floatminDistance,LocationListenerlistener)minTime:回调时间间隔floatminDistance:回调距离间隔locationManager.requestLocationUpdate(locationManager.AGPS_PROVIDER,60000,10,newLocationListener(){publicvoidonLocationChanged(Locationlocation){//更新位置}}浙江大学软硬件协同设计实验室浙江大学计算机学院15位置警报addProximityAlert(doublelatitude,doublelongitude,floatradius,longexpiration,PendingIntentintent)radius:警报半径expiration:警报时间,-1则永不过期intent:由警报触发,以广播形式发出可创建BroadcastReceiver,并注册相关应用,以响应警报事件浙江大学软硬件协同设计实验室
本文标题:Android教程07-硬件访问
链接地址:https://www.777doc.com/doc-7027058 .html