Android 之摇一摇录音(加速度传感器)
来源:互联网 发布:编程中什么是栈 编辑:程序博客网 时间:2024/05/22 12:24
现在就要实现摇一摇能录音的一个效果~
这是使用加速度传感器实现的
还附加了震动的效果
录音停止之后,还能播放录音~
不过要使用真机测试~
代码如下:
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/start" android:textColor="#ff0000"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="stop" android:text="停止" android:textColor="#00ff00"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="play" android:text="播放" android:textColor="#0000ff"/> </LinearLayout>
MainActivity:
public class MainActivity extends Activity implements SensorEventListener{//sensor管理器private SensorManager sensorManager;//震动private Vibrator mVibrator;private TextView start;private MediaRecorder mediaRecorder;private MediaPlayer mediaPlayer;public void stop(View view){mediaRecorder.stop();start.setVisibility(View.GONE);mediaRecorder.release();//释放资源Toast.makeText(MainActivity.this, "录制完成", 0).show();}public void play(View view){try {//这个是录音的存储位置和名字String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/bb.amr";mediaPlayer.setDataSource(path);mediaPlayer.prepare();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} mediaPlayer.start();}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);start=(TextView) findViewById(R.id.start);sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);mVibrator=(Vibrator) getSystemService(VIBRATOR_SERVICE);mediaPlayer=new MediaPlayer();//通过MediaRecorder录制音频//1.创建mediaRecorder=new MediaRecorder(); //2.调用MediaRecorder对象的方法来设置声音来源mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//3.设置录制的音频格式mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//4.设置编码格式mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//5.设置保存路径mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/bb.amr");//6.进入准备录制的状态try {mediaRecorder.prepare();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overrideprotected void onResume() {// TODO Auto-generated method stub//传感器的绑定sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_UI);super.onResume();}@Overrideprotected void onStop() {// TODO Auto-generated method stub//传感器的解除绑定sensorManager.unregisterListener(this);super.onStop();}@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubswitch (event.sensor.getType()) { case Sensor.TYPE_ACCELEROMETER: if(Math.abs(event.values[0])>15||Math.abs(event.values[1])>15||Math.abs(event.values[2])>15){mVibrator.vibrate(100);System.out.println("111111111111111111111");start.setText("开始录制中...");System.out.println("222222222222222");Toast.makeText(MainActivity.this, "开始录制", 0).show();mediaRecorder.start(); } break; default: break;}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}}
还要加上权限:
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
源码:http://download.csdn.net/detail/qq_33642117/9584996
0 0
- Android 之摇一摇录音(加速度传感器)
- Android之传感器(二)加速度传感器
- Android传感器之加速度传感器
- Android加速度传感器应用之晃动次数测试(摇一摇)
- Android传感器 之 加速度传感器(Sensor.TYPE_ACCELEROMETER)
- 自学Android之加速度传感器
- 加速度传感器(摇一摇)
- Android传感器(二):加速度传感器
- Android传感器(五):线性加速度传感器
- Android实战技巧之四十二:加速度传感器
- Android实战技巧之四十二:加速度传感器
- Android传感器学习之加速度传感器数据获取
- android studio 传感器之加速度,临近,光线传感器
- Android加速度传感器实现微信“摇一摇”
- Android笔记(十八)加速度传感器
- android加速度传感器
- Android加速度传感器
- android手机加速度传感器
- 【java基础】JAVA常用正则表达式
- poj2752 kmp 最短子串重复次数
- ABAP读取文件 两种文件
- 适配器模式
- php设计模式之单例模式
- Android 之摇一摇录音(加速度传感器)
- SpringMVC处理请求流程(转载)
- iOS之 多线程的深入探究
- c++23、C++中类的交叉引用
- ABAP 读取文件 GUI_UPLOAD
- C语言assert
- :?的陷阱
- Python修改文件内容
- leetcode Super Pow