導航:首頁 > 操作系統 > android上傳錄音文件

android上傳錄音文件

發布時間:2023-05-23 07:03:00

『壹』 android實現錄音功能

1 Android錄音需要聲明錄音許可權

<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.錄音文件要寫到文件夾中,創建文件夾,在Application的onCreate方法中創建文件夾

@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是個靜態的文件路徑

//錄音文件

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 {

    // 錄音界面相關

    Button btnStart;

    Button btnStop;

    TextView textTime;

    // 錄音功能相關

    MediaRecorder mMediaRecorder; // MediaRecorder 實例

    boolean isRecording; // 錄音狀態

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

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

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

    int timeCount; // 錄音時長 計數

    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", "結束錄音");

        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);// 設置麥克風

            /*

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

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

            */

            mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

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

            mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

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

            //注意文件夾要創建之後才能使用

            filePath = Constant.UrlAudio + fileName;

            /* ③准備 */

            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() {

//有一些網友反應在5.0以上在調用stop的時候會報錯,翻閱了一下谷歌文檔發現上面確實寫的有可能會報錯的情況,捕獲異常清理一下就行了,感謝大家反饋!

        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="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/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="結束"

        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>

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

『貳』 安卓手機錄音文件如何導出到電腦

安卓手機錄音文件如何導出到電腦?敬業簽這款支持錄音記事的便簽軟體就可以幫你解決這一難題,因運乎為它:
1、支持我們創建語音便簽,所以我們可以通過錄音的方式記錄重要事項或內容,旁畝悉而且還可以直接上傳錄音文件;
2、創建的音頻文件可以自動備份至雲端;
3、具備多端雲同步的功能,只需登錄同一賬號,錄音文件就可以自動同步至以下幾個埠:Windows/Android/ios/Web/ipad/Mac,所以它可以直接將錄音文件耐基轉到電腦上,如果需要,還可以直接下載到電腦上。

『叄』 android 怎麼用二進制流上傳圖片與音頻文件

QusetionForm qusetionForm = (QusetionForm)form; FormFile imageTopic= qusetionForm.getImageTopic(); String name=imageTopic.getFileName(); String url=(servlet.getServletConfig().getServletContext().getRealPath("\\")+name).replace('\\','/');

『肆』 安卓手機如何上傳音頻到百度中

下載網路雲,上傳文件夾就可以了

『伍』 android上傳錄音到伺服器代碼思路

你先得配液確定伺服器用什麼協議啊,HTTP,webservice,socket等等,如果用http一般兩種方式,一個是java自帶的urlhttpconnection,還有就是阿帕奇的httpclient。
代碼片段
// 使用POST方法提交數據,必須大寫
conn.setRequestMethod("POST");
// 需要輸出流
conn.setDoOutput(true);
//培吵物 需要輸入流
conn.setDoInput(true);
// 連接超時,10秒
conn.setConnectTimeout(10 * 1000);
// 讀取超時,10秒
conn.setReadTimeout(10 * 1000);
// 打開輸出流,寫入數據
out = conn.getOutputStream();
out.write(data);
out.flush();
// 以上
conn.connect();
if (conn.getResponseCode() == 200) {
in = conn.getInputStream();
// TODO 讀取數據
// 參考
int contentLength = conn.getContentLength();
ByteArrayOutputStream buf = new ByteArrayOutputStream(
contentLength > 0 ? contentLength : 1024);
byte[] buffer = new byte[1024];
while ((contentLength = in.read(buffer)) != -1) {
buf.write(buffer, 0, contentLength);
}
// 可選
buf.flush();
return buf.toByteArray();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (conn != null) {
conn.disconnect();
}
// 錯誤的寫法
// try {
// in.close();
// out.close();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
//盡量不要返回null 避免空指針異常
return new byte[0];
}

伺服器在getpost裡面接收可以轉碰譽為btye數組,然後在轉為文件

『陸』 如何設置手機自動通話錄音並上傳錄音的文件夾

android版本從1.6開始就收緊了軟體內錄許可權,如果你的手機沒有內侍判置錄音功能,那麼想找個能錄音的軟體都要碰運氣,更不要說你連自己的手機系統版本號都不肯講出來的情況下了。
這兩個軟體功能合並起來會被定義為非法軟體,所以萬一你找到了內錄軟體,那麼上傳的事可以交給一老寬改些網盤客戶端,巧慎他們都具備自動上傳功能。

『柒』 怎樣把電腦里的音頻文件傳到手機上

手機文件怎麼傳到電腦?現在很多事情我們都能通過手機完成,因此上面也保存了很多重要的數據,如通訊錄聯系人、照片、微信聊天記錄等等,那這些數據怎麼傳到電腦上呢?今天就針對這個問題,給大家分享幾招,希望能夠幫助到你喲!

蘋果手機備份?生活中我們難免會遇到數據丟失的情況,因此定期備份才是有效保護數據的做法,小夥伴們還在等什麼呢?抓緊試試梁纖拍看吧!

『捌』 OPPO29安卓手機要怎麼把錄音上傳到群文件中的某個文件夾里

一般來說你打開那個文件夾,然後一般都會有上傳的選項,你點擊一下就好了。

『玖』 安卓手機錄音怎麼發到微信上

1、首先打開安卓手機,找到錄音機,在錄音機中將錄音裁剪成多個小錄音文件。
2、其次長按錄音,選中分享,選擇添加到微信收藏,打配簡畢開微信,點開我,選中收藏,點擊錄音,選擇三點。
3、最後選中發送給朋友,點擊聯系咐燃人,選中分享就可以把培芹錄音發到微信上了。

『拾』 安卓手機的錄音如何發到蘋果手機上

  1. 先發到電腦端,用格式工廠轉換成mp3格式。

  2. 將手機與電腦用usb連接,電腦上的itunes自動打開,如果你電腦里沒有安裝itunes軟體的話,請下載。

  3. 勾選音樂選項下的同步音樂,想把整個音樂庫中的歌曲都導入手機的話就選擇「整個音樂資料庫」,點擊下面的應用即把錄音發到蘋果手機上了。

閱讀全文

與android上傳錄音文件相關的資料

熱點內容
壓縮機螺桿加工 瀏覽:368
怎麼把網站伺服器設置在境外 瀏覽:162
單片機編程取反 瀏覽:897
51單片機課程設計課題 瀏覽:900
手機淘寶登錄怎麼加密碼 瀏覽:486
linux快捷方式圖標 瀏覽:38
陽光車險的app叫什麼名字 瀏覽:462
購買單片機的器件時需要給商家啥 瀏覽:535
並行編譯技術的發展 瀏覽:550
阿里雲伺服器安裝管理 瀏覽:551
java手機開發教程 瀏覽:675
我的世界怎麼刪除伺服器數據 瀏覽:672
linux內存子系統 瀏覽:973
加密思維幣 瀏覽:691
魅族訪客文件夾 瀏覽:53
添加的文件夾怎麼找 瀏覽:618
程序員涉黃 瀏覽:701
maven編譯resources下的js 瀏覽:522
ubuntu文件移動命令 瀏覽:230
安卓i怎麼查找蘋果手機 瀏覽:952