Android仿微信發(fā)送語音消息的功能及示例代碼
微信的發(fā)送語音是有一個向上取消的,我們使用onTouchListener來監(jiān)聽手勢,然后做出相應的操作就行了。
直接上代碼:
//語音操作對象 private MediaPlayer mPlayer = null; private MediaRecorder mRecorder = null; //語音文件保存路徑 private String FileName = null; FileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/soundrecord/amrsend.amr";
定義一個ImageView,然后給它設置監(jiān)聽事件:
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
beginX = motionEvent.getX();
beginY = motionEvent.getY();
Log.e("MainActivity", "beginX:" + beginX);
Log.e("MainActivity", "beginY:" + beginY);
Log.e("MainActivity", "ACTION_DOWN");
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(FileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e("MainActivity", "prepare() failed" + e);
}
mRecorder.start();
break;
case MotionEvent.ACTION_UP:
finalX = motionEvent.getX();
finalY = motionEvent.getY();
Log.e("MainActivity", "finalX:" + finalX);
Log.e("MainActivity", "finalY:" + finalY);
Log.e("MainActivity", "ACTION_UP");
mRecorder.stop();
mRecorder.release();
mRecorder = null;
if ((beginY - finalY) > 50) {
Log.e("MainActivity", "執(zhí)行刪除");
new File(FileName).delete();
Log.e("MainActivity", "執(zhí)行刪除后文件是否還存在:" + new File(FileName).exists());
}
break;
default:
break;
}
return true;
}
然后在清單文件中加上需要的權(quán)限就行了:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
也可以在按下之后播放動畫,顯示正在錄音,然后在抬起動作之后結(jié)束動畫,這樣就比較形象了。
總結(jié)
以上所述是小編給大家介紹的Android仿微信發(fā)送語音消息的功能及示例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
Android8.0適配前臺定位服務service的示例代碼
這篇文章主要介紹了Android8.0適配前臺定位服務service的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
Android 開發(fā)之旅:詳解view的幾種布局方式及實踐
這篇文章主要介紹了Android 開發(fā)之旅:詳解view的幾種布局方式及實踐,具有一定的參考價值,有需要的可以了解一下。2016-12-12
Android中通過RxJava進行響應式程序設計的入門指南
響應式編程在Android中的運用是非常犀利的,比如在異常處理和調(diào)度器方面,這里我們將從生命周期等方面來講解Android中通過RxJava進行響應式程序設計的入門指南:2016-06-06
FFmpeg Principle學習open_output_file打開輸出文件
這篇文章主要為大家介紹了FFmpeg Principle學習open_output_file打開輸出文件示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
Flutter中使用setState時的6個簡單技巧總結(jié)
平常在使用flutter的控件時我們都知道,要刷新頁面那么只需要調(diào)用setState()方法即可,這篇文章主要給大家介紹了關于Flutter中使用setState時的6個簡單技巧,需要的朋友可以參考下2022-05-05
Android掃描二維碼時出現(xiàn)用戶禁止權(quán)限報錯問題解決辦法
這篇文章主要介紹了Android掃描二維碼時出現(xiàn)用戶禁止權(quán)限報錯問題解決辦法的相關資料,需要的朋友可以參考下2017-06-06

