真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

錄音android,錄音機(jī)

Android實現(xiàn)錄音功能

1 Android錄音需要聲明錄音權(quán)限

撫順ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

uses-permission android:name="android.permission.RECORD_AUDIO" /

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /

uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /

2.錄音文件要寫到文件夾中,創(chuàng)建文件夾,在Application的onCreate方法中創(chuàng)建文件夾

@Override

public void onCreate() {

super.onCreate();

CrashHandler mCrashHandler = CrashHandler.getInstance();

mCrashHandler.init(getApplicationContext(), getClass());

initFile();

}

private void initFile() {

//錄音文件

File audioFile = new File(Constant.UrlAudio);

if (!audioFile.exists()) {

? ? audioFile.mkdirs();

} else if (!audioFile.isDirectory()) {

? ? audioFile.delete();

? ? audioFile.mkdirs();

}

//拍攝圖片文件

File imageFile = new File(Constant.UrlImage);

if (!imageFile.exists()) {

? ? imageFile.mkdirs();

} else if (!imageFile.isDirectory()) {

? ? imageFile.delete();

? ? imageFile.mkdirs();

}

}

Constant.UrlImage是個靜態(tài)的文件路徑

//錄音文件

public static String UrlAudio = FileUtil.getSdcardPathOnSys()+"/EhmFile/media/audio/";

3.在activity中開始錄音

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.os.Environment;

import android.os.Handler;

import android.os.Message;

import android.media.MediaRecorder;

import android.text.format.DateFormat;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import java.io.File;

import java.io.IOException;

import java.util.Calendar;

import java.util.Locale;

public class Record2Activity extends AppCompatActivity {

// 錄音界面相關(guān)

Button btnStart;

Button btnStop;

TextView textTime;

// 錄音功能相關(guān)

MediaRecorder mMediaRecorder; // MediaRecorder 實例

boolean isRecording; // 錄音狀態(tài)

String fileName; // 錄音文件的名稱

String filePath; // 錄音文件存儲路徑

Thread timeThread; // 記錄錄音時長的線程

int timeCount; // 錄音時長 計數(shù)

final int TIME_COUNT = 0x101;

// 錄音文件存放目錄

final String audioSaveDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/audiodemo/";

@Override

protected void onCreate(Bundle savedInstanceState) {

? ? super.onCreate(savedInstanceState);

? ? setContentView(R.layout.activity_record2);

? ? btnStart = (Button) findViewById(R.id.btn_start);

? ? btnStop = (Button) findViewById(R.id.btn_stop);

? ? textTime = (TextView) findViewById(R.id.text_time);

? ? btnStart.setOnClickListener(new View.OnClickListener() {

? ? ? ? @Override

? ? ? ? public void onClick(View v) {

// 開始錄音

? ? ? ? ? ? btnStart.setEnabled(false);

? ? ? ? ? ? btnStop.setEnabled(true);

? ? ? ? ? ? startRecord();

? ? ? ? ? ? isRecording = true;

// 初始化錄音時長記錄

? ? ? ? ? ? timeThread = new Thread(new Runnable() {

? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? public void run() {

? ? ? ? ? ? ? ? ? ? countTime();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? });

? ? ? ? ? ? timeThread.start();

? ? ? ? }

? ? });

? ? btnStop.setOnClickListener(new View.OnClickListener() {

? ? ? ? @Override

? ? ? ? public void onClick(View v) {

// 停止錄音

? ? ? ? ? ? btnStart.setEnabled(true);

? ? ? ? ? ? btnStop.setEnabled(false);

? ? ? ? ? ? stopRecord();

? ? ? ? ? ? isRecording = false;

? ? ? ? }

? ? });

}

// 記錄錄音時長

private void countTime() {

? ? while (isRecording) {

? ? ? ? Log.d("mediaRe","正在錄音");

? ? ? ? timeCount++;

? ? ? ? Message msg = Message.obtain();

? ? ? ? msg.what = TIME_COUNT;

? ? ? ? msg.obj = timeCount;

? ? ? ? myHandler.sendMessage(msg);

? ? ? ? try {

? ? ? ? ? ? timeThread.sleep(1000);

? ? ? ? } catch (InterruptedException e) {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

? ? }

? ? Log.d("mediaRec", "結(jié)束錄音");

? ? timeCount = 0;

? ? Message msg = Message.obtain();

? ? msg.what = TIME_COUNT;

? ? msg.obj = timeCount;

? ? myHandler.sendMessage(msg);

}

/**

* 開始錄音 使用amr格式

* 錄音文件

*

* @return

*/

public void startRecord() {

// 開始錄音

? ? /* ①Initial:實例化MediaRecorder對象 */

? ? if (mMediaRecorder == null)

? ? ? ? mMediaRecorder = new MediaRecorder();

? ? try {

? ? ? ? /* ②setAudioSource/setVedioSource */

? ? ? ? mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 設(shè)置麥克風(fēng)

? ? ? ? /*

? ? ? ? * ②設(shè)置輸出文件的格式:THREE_GPP/MPEG-4/RAW_AMR/Default THREE_GPP(3gp格式

? ? ? ? * ,H263視頻/ARM音頻編碼)、MPEG-4、RAW_AMR(只支持音頻且音頻編碼要求為AMR_NB)

? ? ? ? */

? ? ? ? mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

? ? ? ? /* ②設(shè)置音頻文件的編碼:AAC/AMR_NB/AMR_MB/Default 聲音的(波形)的采樣 */

? ? ? ? mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

? ? ? ? fileName = DateFormat.format("yyyyMMdd_HHmmss", Calendar.getInstance(Locale.CHINA)) + ".m4a";

? ? ? ? //注意文件夾要創(chuàng)建之后才能使用

? ? ? ? filePath = Constant.UrlAudio + fileName;

? ? ? ? /* ③準(zhǔn)備 */

? ? ? ? mMediaRecorder.setOutputFile(filePath);

? ? ? ? mMediaRecorder.prepare();

? ? ? ? /* ④開始 */

? ? ? ? mMediaRecorder.start();

? ? } catch (IllegalStateException e) {

? ? ? ? Log.i("mediaEr", "call startAmr(File mRecAudioFile) failed!" + e.getMessage());

? ? } catch (IOException e) {

? ? ? ? e.printStackTrace();

? ? ? ? Log.i("mediaEr", "call startAmr(File mRecAudioFile) failed!" + e.getMessage());

? ? }

}

/**

* 停止錄音

*/

public void stopRecord() {

//有一些網(wǎng)友反應(yīng)在5.0以上在調(diào)用stop的時候會報錯,翻閱了一下谷歌文檔發(fā)現(xiàn)上面確實寫的有可能會報錯的情況,捕獲異常清理一下就行了,感謝大家反饋!

? ? try {

? ? ? ? mMediaRecorder.stop();

? ? ? ? mMediaRecorder.release();

? ? ? ? mMediaRecorder = null;

? ? ? ? filePath = "";

? ? } catch (RuntimeException e) {

? ? ? ? Log.e("mediaR", e.toString());

? ? ? ? mMediaRecorder.reset();

? ? ? ? mMediaRecorder.release();

? ? ? ? mMediaRecorder = null;

? ? ? ? File file = new File(filePath);

? ? ? ? if (file.exists())

? ? ? ? ? ? file.delete();

? ? ? ? filePath = "";

? ? }

}

// 格式化 錄音時長為 秒

public static String FormatMiss(int miss) {

? ? return "" + miss;

}

Handler myHandler = new Handler() {

? ? @Override

? ? public void handleMessage(Message msg) {

? ? ? ? switch (msg.what) {

? ? ? ? ? ? case TIME_COUNT:

? ? ? ? ? ? ? ? int count = (int) msg.obj;

? ? ? ? ? ? ? ? Log.d("meidaRe","count == " + count);

? ? ? ? ? ? ? ? textTime.setText(FormatMiss(count));

? ? ? ? ? ? ? ? break;

? ? ? ? }

? ? }

};

@Override

protected void onDestroy() {

? ? super.onDestroy();

? ? myHandler.removeCallbacksAndMessages(null);

}

}

布局文件很簡單

?xml version="1.0" encoding="utf-8"?

androidx.constraintlayout.widget.ConstraintLayout xmlns:android=""

xmlns:app=""

xmlns:tools=""

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".Record2Activity"

Button

? ? android:id="@+id/btn_stop"

? ? android:layout_width="wrap_content"

? ? android:layout_height="wrap_content"

? ? android:text="結(jié)束"

? ? app:layout_constraintBottom_toBottomOf="parent"

? ? app:layout_constraintEnd_toEndOf="parent"

? ? app:layout_constraintHorizontal_bias="0.5"

? ? app:layout_constraintStart_toEndOf="@+id/btn_start"

? ? app:layout_constraintTop_toTopOf="parent" /

Button

? ? android:id="@+id/btn_start"

? ? android:layout_width="wrap_content"

? ? android:layout_height="wrap_content"

? ? android:text="開始"

? ? app:layout_constraintBottom_toBottomOf="parent"

? ? app:layout_constraintEnd_toStartOf="@+id/btn_stop"

? ? app:layout_constraintHorizontal_bias="0.5"

? ? app:layout_constraintStart_toStartOf="parent"

? ? app:layout_constraintTop_toTopOf="parent" /

TextView

? ? android:id="@+id/text_time"

? ? android:layout_width="wrap_content"

? ? android:layout_height="wrap_content"

? ? android:layout_marginStart="11dp"

? ? android:layout_marginTop="47dp"

? ? android:text="時間"

? ? app:layout_constraintStart_toStartOf="@+id/btn_start"

? ? app:layout_constraintTop_toBottomOf="@+id/btn_start" /

/androidx.constraintlayout.widget.ConstraintLayout

這樣就可以使用錄音功能了

安卓手機(jī)怎么設(shè)置通話錄音

如果您使用的是華為手機(jī),可以通過以下方法操作:

一、通話期間錄音

通話過程中,在通話界面,點擊錄音,可錄取當(dāng)前通話內(nèi)容。

二、開啟自動錄音功能

開啟自動錄音,幫您記錄每一個重要通話內(nèi)容。

1.進(jìn)入電話 四個點 設(shè)置 通話自動錄音,開啟通話自動錄音開關(guān),會自動對所有通話進(jìn)行錄音。

2.如需對特定號碼的通話錄音,點擊自動錄音對象,設(shè)置指定號碼。

三、查看通話錄音結(jié)果

打開文件管理,搜索 Sounds 并進(jìn)入此文件夾,然后點擊 CallRecord 查看通話錄音文件。

安卓手機(jī)通話怎么錄音

若使用vivo手機(jī),通話錄音可參考以下設(shè)置方法:

1、可以進(jìn)入手機(jī)設(shè)置--(應(yīng)用與權(quán)限)--(系統(tǒng)應(yīng)用設(shè)置)--電話--通話錄音中,選擇“所有通話自動錄音”或“指定號碼自動錄音”,設(shè)置后,當(dāng)您開始通話時,手機(jī)會自動進(jìn)行錄音。

從Funtouch OS 2.0開始的機(jī)器都支持通話自動錄音(不包括Funtouch OS 3.0)

2、撥打電話時,您點擊通話界面的“錄音”即可錄通話內(nèi)容,通話結(jié)束后,文件可進(jìn)入文件管理--本地文件/所有文件/手機(jī)存儲--Record/錄音文件夾中找到。

安卓手機(jī)錄音在哪里找到(蘋果手機(jī)怎么免費錄音)

1.安卓手機(jī)錄音尋找方法如下:第一打開手機(jī)的錄音機(jī),點擊手機(jī)按鍵菜單鍵。

2.進(jìn)入錄音機(jī)設(shè)定模式,看看錄音文件是存在存儲卡還是手機(jī)內(nèi)存文件夾。

3.如果看到手機(jī)是把錄音文件放在了存儲卡上,手機(jī)連接上電腦進(jìn)入我的存儲卡。

4.打開SOUND文件夾,錄音文件都在這里了,錄音文件為3ga后綴的文件這些就是安卓類手機(jī)的錄音文件了。

安卓手機(jī)的通話錄音保存在哪里

若使用的是vivo手機(jī),在通話的時候點擊鍵盤上的錄音按鈕即可錄音,錄音文件保存在文件管理--本地文件/所有文件/手機(jī)存儲--Record/錄音文件夾中(通話錄音的保存路徑無法修改)。

安卓手機(jī)電話錄音保存在哪里

若是指vivo手機(jī)查看通話錄音保存位置:

OriginOS Ocean系統(tǒng):進(jìn)入文件管理--手機(jī)存儲--(Recordings)--Record--Call文件夾--即可查看通話錄音;

其他系統(tǒng):進(jìn)入文件管理--手機(jī)存儲/本地文件/所有文件--Record/錄音文件夾--即可查看通話錄音。

注:通話錄音的保存路徑不支持修改。

更多疑問可以點擊此鏈接詢問在線客服。


新聞名稱:錄音android,錄音機(jī)
文章出自:http://weahome.cn/article/dscpicp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部