摇一摇手机控制手机录音功能
来源:互联网 发布:欧文总决赛第七战数据 编辑:程序博客网 时间:2024/05/16 01:06
学完传感器的知识之后,才发现传感器的实现也是特别容易的,我们可以在它的监听事件中进行一系列的功能处理。
创建的基本步骤是
1,在onCreate中获取SensorManager实例
sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
2,在onResume中注册监听
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
,SensorManager.SENSOR_DELAY_UI);
3,在监听器的回调方法中获取对应的传感器的x,y,x三个点的数据
onSensorChanged:
float [] values=event.values;
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER) {
float x=event.values[0];
float y=event.values[1];
float z=event.values[2];}
4,一定记得在最后取消注册,因为传感器开启后是特别耗电的,如果不及时关闭会带来很不好的用户体验
sensorManager.unregisterListener(this);
在这个项目中我遇到的问题是我的录音功能只能够录制一次,后来我发现问题就是我在播放录音的时候没有将MediaPlayer对象设为空,当然在开是播放时还得加一下判断一下MediaPlayer对象是否为空,为空就创建这个对象。
最终的效果就是:当你摇第一下的时候文本会变为开始录音,摇第二下是结束录音,在点击播放时会播放录音。在摇一摇的力度控制我设置了固定的数据,通过测试会有基本的效果,但是我就的这个设死的数据不够灵活,有时候摇一摇并没有改变文本,希望有人能帮我解决这个问题。
最后我附上项目的源码
public class MainActivity extends Activity implements SensorEventListener{private TextView tv;private int i=0;private SensorManager sensorManager;private MediaRecorder mediaRecorder;private MediaPlayer mediaPlayer;public void play(View view){String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/fofo.amr";try {mediaPlayer.setDataSource(path);mediaPlayer.prepare();mediaPlayer.start();mediaPlayer=null; <span style="font-family: Arial, Helvetica, sans-serif;">这里是为了可以反复录音,就需要把之前的对象给设为空</span>} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onResume() {sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION),SensorManager.SENSOR_DELAY_UI);super.onResume();}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv=(TextView)findViewById(R.id.tv);sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);}@Overrideprotected void onStop() {// TODO Auto-generated method stubsensorManager.unregisterListener(this);super.onStop();}@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubfloat [] values=event.values;if(event.sensor.getType()==Sensor.TYPE_LINEAR_ACCELERATION) {float x=event.values[0];float y=event.values[1];float z=event.values[2];int index=8;int id=10;if((x>index||y>index||z>index)&&i==0){ //开始录音的数据我设置的比较小tv.setText("开始录音");if(mediaPlayer==null){ 这里是为了可以反复录音,就需要把之前的对象给设为空mediaPlayer = new MediaPlayer();}mediaRecorder=new MediaRecorder();mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/fofo.amr"); 音频放在位置sd卡中try {mediaRecorder.prepare();} catch (Exception e) {e.printStackTrace();}mediaRecorder.start();i=1;}if((x>id||y>id||z>id)&&i==1){tv.setText("结束录音");mediaRecorder.stop();mediaRecorder.release();i=0;}}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}}
- 摇一摇手机控制手机录音功能
- MediaRecorder实现手机录音功能
- Unity实现手机录音功能
- Android调用手机摄像头拍照和录音功能
- 如何在mobile手机上,调用拍照和录音功能?
- 监听手机录音
- angularjs+ngCordova 手机录音
- 摇一摇控制手机震动
- 手机摇一摇 功能
- 手机摇一摇实现功能
- 手机摇一摇功能
- phonegap实现手机录音功能并上传到服务器,同时下载缓存到手机
- (综合)iPhone手机录音-amr
- Android手机通话录音实现
- android 实现手机摇一摇功能
- HTML5实现手机摇一摇功能
- IOS手机摇一摇的功能
- Androidstudio实现手机摇一摇功能
- movsx-movzx(转)
- 跨浏览器兼容测试8大利器
- 如何把一长串数字分位显示?
- maven命令创建java和javaweb工程
- Windows Vista/7 下取消睡眠状态
- 摇一摇手机控制手机录音功能
- 字符串 全组合
- 标签式的菜单
- 网络请求报错
- word文件不能复制解决办法
- photoshop cs5基础教程10增强的3d…
- 应用PS CS5的3D功能制作三维立体文…
- CuteFtp Pro之站点导入导出
- 鬼泣