久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6020|回復: 0
打印 上一主題 下一主題
收起左側

Android實現錄音、播音、錄制視頻功能

[復制鏈接]
跳轉到指定樓層
樓主
ID:83710 發表于 2015-6-25 16:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
     智能手機操作系統IOS與Android平分天下(PS:WP與其他的直接無視了),而Android的免費招來了一大堆廠商分分向Android示好,故Android可能會有“較好”的前景。

    Android實現簡單的錄音、播音與視頻錄制功能。當然了、無論是出場綁定的還是第三方都有很多很好的應用。但是對于一名開發人員來說及時做的UI再丑、功能再爛那也是一種成就!

    實現錄音、錄制視頻功能需要調用【MediaRecorder】類,播放音頻則需要【MediaPlayer】類。那簡單以實現錄音、錄制視頻、播放音頻為例寫一個自己的SoundRecordingHelper類。

    思路:Android已經封裝好了這兩個類只需要進行簡單的設置就可以實現這三個功能了
    1、需要在工程文件中添加需要的權限
    2、設置布局文件
    3、調用自己封裝的SoundRecordingHelper類。下面主要講SoundRecordingHelper類,實現功能直接調用此類中的Start與Stop方法即可。

    
package com.clown.tools;

    import android.content.Context;
    import android.media.MediaPlayer;
    import android.media.MediaRecorder;
    import android.os.Environment;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;

    /*
     * Android錄音輔助類 
     * 需要添加的權限:
     * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
     * <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
     * <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
     * 視頻錄制添加的權限:
     * <uses-permission android:name="android.permission.CAMERA" />  
     * <uses-permission android:name="android.permission.RECORD_AUDIO" />  
     * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
     * 文件格式:Environment.getExternalStorageDirectory().getAbsolutePath() + "/TonFun.amr"
     */
    public class SoundRecordingHelper implements SurfaceHolder.Callback {
// 文件路徑
private String strFilePath = "";
// 數據上下文
private Context context = null;
// 媒體播放對象
private MediaPlayer mPlayer = null;
// 媒體錄音對象
private MediaRecorder mRecorder = null;
// 用來顯示視頻的一個接口,我靠不用還不行,也就是說用mediarecorder錄制視頻還得給個界面看
// 想偷偷錄視頻的同學可以考慮別的辦法。。嗯需要實現這個接口的Callback接口
private SurfaceHolder surfaceHolder;

public String getStrFilePath() {
return strFilePath;
}

public void setStrFilePath(String strFilePath) {
this.strFilePath = strFilePath;
}

/*
* 音頻錄制的構造函數
*/
public SoundRecordingHelper(Context context, String strFilePath) {
this.context = context;
this.strFilePath = strFilePath;
}

/*
* 視頻錄制的構造函數
*/
@SuppressWarnings("deprecation")
public SoundRecordingHelper(Context context, SurfaceView surfaceview,
String strFilePath) {
this.context = context;
this.surfaceHolder = surfaceview.getHolder();
this.surfaceHolder.addCallback(this); // 加入回調接口
this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); // 這個方法已經過時了,但是為了兼容低版本必須設置
this.strFilePath = strFilePath;
}

/*
* 開始錄音
*/
public boolean startSoundRecording() {
boolean bResult = false;
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 設置音頻來源(MIC表示麥克風)
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); // 設置音頻輸出格式
mRecorder.setOutputFile(strFilePath);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); // 設置音頻編碼
try {
mRecorder.prepare();
mRecorder.start();
bResult = true;
} catch (Exception ex) {
System.out.println("Error:錄音失敗、" + ex.getMessage());
bResult = false;
}
return bResult;
}

/*
* 停止錄音
*/
public boolean stopSoundRecording() {
boolean bResult = false;
if (mRecorder != null) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
bResult = true;
} else {
bResult = false;
}
return bResult;
}

/*
* 開始播放音頻
*/
public boolean startPlay() {
boolean bResult = false;
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(strFilePath);
mPlayer.prepare();
mPlayer.start();
bResult = true;
} catch (Exception ex) {
System.out.println("Error:播放失敗、" + ex.getMessage());
bResult = false;
}
return bResult;
}

/*
* 停止播放音頻
*/
public boolean stopPlay() {
boolean bResult = false;
if (mPlayer != null) {
mPlayer.stop();
mPlayer.release();
mPlayer = null;
bResult = true;
} else {
bResult = false;
}
return bResult;
}

/*
* 調用攝像頭進行視頻錄制 nWidth:視頻的寬
* nHeight:視頻的高nRate:視頻幀數nType:視頻格式(MediaRecorder.OutputFormat.THREE_GPP)
*/
public boolean startVideoRecording(int nWidth, int nHeight, int nRate,
int nType) {
boolean bResult = false;
mRecorder = new MediaRecorder();
mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); // 設置視頻源為攝像頭
mRecorder.setOutputFormat(nType);// 設置錄制完成后視頻的封裝格式THREE_GPP為3gp.MPEG_4為mp4
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); // 設置錄制的視頻編碼h263
// h264
mRecorder.setVideoSize(nWidth, nHeight);// 設置視頻錄制的分辨率。必須放在設置編碼和格式的后面,否則報錯
mRecorder.setVideoFrameRate(nRate);// 設置錄制的視頻幀率。必須放在設置編碼和格式的后面,否則報錯
mRecorder.setPreviewDisplay(surfaceHolder.getSurface()); // 設置顯示預覽
mRecorder.setOutputFile(strFilePath); // 設置輸出路徑
try {
mRecorder.prepare();
mRecorder.start();
bResult = true;
} catch (Exception ex) {
System.out.print("Error:視頻錄制錯誤、" + ex.getMessage());
bResult = false;
}
return bResult;
}

/*
* 停止視頻錄制
*/
public boolean stopVideoRecording() {
boolean bResult = false;
if (mRecorder != null) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
bResult = true;
} else {
bResult = false;
}
return bResult;
}

/*
* SurfaceHolder.Callback接口實現方法
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
System.out.println(holder.toString());
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
System.out.println(holder.toString());
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
if (context != null) {
context = null;
}
if (mPlayer != null) {
mPlayer = null;
}
if (mRecorder != null) {
mRecorder = null;
}
}
} 

注:實現視頻錄制時需要在UI布局中添加 
Surfaceview控件,用以實時預覽視頻。如分辨率過低是會導致視頻花屏!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99一区二区 | 美女视频.| 午夜在线视频 | 亚洲成人免费观看 | 一级在线观看 | 欧美日韩亚洲一区 | 欧美aa在线 | 中文字幕视频在线 | 国产精品久久二区 | 亚洲日韩中文字幕 | 欧美天堂在线 | 亚洲一区二区在线电影 | 国产精品不卡视频 | 欧美舔穴 | 成人精品一区二区三区中文字幕 | 成人免费视频在线观看 | 二区在线视频 | 国产98色在线 | 成人亚洲精品久久久久软件 | 亚洲天堂精品久久 | 日韩毛片免费视频 | 国产欧美一区二区三区在线看蜜臀 | 人人射人人 | 日韩精品久久一区二区三区 | 国产激情在线观看 | 中文字幕视频在线看 | 亚洲欧美在线视频 | 久久在线免费 | 欧美女优在线观看 | 日韩精品一区在线观看 | 日韩中文字幕一区二区 | 国产亚洲一区二区三区 | 激情婷婷 | 久久天天躁狠狠躁夜夜躁2014 | 成人国产一区二区三区精品麻豆 | 国产精品美女久久久久aⅴ国产馆 | 91精品国产综合久久久动漫日韩 | 观看av | 成人亚洲精品久久久久软件 | 欧美aa在线 | 精品国产一区二区三区日日嗨 |