2、打开通讯录,打开设置菜单,查找有没有通话录音设置
3、如果没有打开华为应用商店均有下载安装,在通话过程中,自动提示。
其他
1、通话录音 *** 作方式:
在通话界面,点击录音图标,开始录音。
再次点击录音图标,结束录音,系统会自动提示录音文件已保存。
2、通话自动录音:
从版本开始支持,请升级到最新版本体验。
*** 作方式:进入拨号>菜单>设置>通话录音设置,开启自动录音即可。
注:开启通话自动录音功能后,设备会自动对所有通话进行双向录音,录音文件默认存储在文件管理 >record路径下。
扩展
华为Mate 30(5G)/Mate 30很不错的,手机参数如下:
1、外观:传承“四眼车灯”的超跑设计,再次闪耀主角光环,其中有翡冷翠、星河银、罗兰紫、亮黑色、青山黛、丹霞橙六款配色,散发神秘莫测而高贵典雅的未来感。
2、屏幕:屏幕尺寸6.62英寸,屏幕色彩1670万色,分辨率为FHD+ 2340 × 1080 像素。
3、拍照:后置摄像,超感光摄像头4000万像素,超广角摄像头1600万像素,长焦摄像头800万像素。光圈:超感光主摄像头f/1.8,超广角摄像头f/2.2,长焦摄像头f/2.4。后置摄像头广角:支持4000万像素超感光摄像头,1600万像素超广角摄像,后置支持3倍光学变焦,5倍混合变焦、30倍数字变焦 。前置摄像头像素2400万像素,f/2.0光圈,支持固定焦距。超感光摄像头、长焦摄尺手像头加入OIS光学防抖。大幅提升稳定性和成片率,拍出清晰大片。
4、性能:Mate30 (5G)采用EMUI 10.0(基于Android 10),搭载最先进的7nm+EUV麒麟990 5G SoC 。全球最先进的7nm+ EUV工艺,提供业界最败困锋佳5G联接体验,支持2G/3G/4G/5G全网通,支持NSA/察晌SA双模,支持5G+4G双卡双待,麒麟990 5G是首款采用华为自研达芬奇架构NPU的旗舰级芯片,创新设计双大核NPU+微核NPU,NPU微核为业界首发的创举,赋能超低功耗应用。Mate 30采用EMUI 10.0(基于Android 10),搭载HUAWEI Kirin 990 。
5、电池:电池容量为4200mAh(典型值),标配充电器支持10V/4A或9V/2A或5V/2A输出,支持最大10V/4A超级快充,兼容4.5V/5A或5V/4.5A超级快充,兼容9V/2A快充。同时支持27W华为无线超级快充,支持无线反向充电,更高效率更为实用。
在移动APP开发中,每逢APP应用设计到多媒体开发的时候,都会让很多陪做帆的程序员头疼不已,而且项目的开发进度会放慢、项目的难度也会加大蛮多,同时APP的测试也会增加。Android中的多媒体开发,有音频的播放、音频的录制、视频的播放、视频的录制
等,虽然Android的SDK中提供了一些基础的开发API类,如音频的录制就提供了两种方式:AudioRecord录制音频和MediaRecorder录
制音频。AudioRecord类相对于MediaRecorder来说,更加接近底层,为我们封芦雹装的方法也更少。然而实现一个AudioRecord的音频录
制程序也很简单。
一、AudioRecord实现录制音频:
package com.hb56.MyAndroidUtil
import java.io.BufferedInputStream
import java.io.BufferedOutputStream
import java.io.DataInputStream
import java.io.DataOutputStream
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException
import android.app.Activity
import android.content.ContentValues
import android.content.Intent
import android.hardware.Camera.AutoFocusCallback
import android.media.AudioFormat
import android.media.AudioManager
import android.media.AudioRecord
import android.media.AudioTrack
import android.media.MediaPlayer
import android.media.MediaRecorder
import android.net.Uri
import android.os.AsyncTask
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.TextView
/**
* 该实例中,我们使用AudioRecord类来完成我们的音频录制程序
* AudioRecord类,我们可以使用三胡尺种不同的read方法来完成录制工作,
* 每种方法都有其实用的场合
* 一、实例化一个AudioRecord类我们需要传入几种参数
* 1、AudioSource:这里可以是MediaRecorder.AudioSource.MIC
* 2、SampleRateInHz:录制频率,可以为8000hz或者11025hz等,不同的硬件设备这个值不同
* 3、ChannelConfig:录制通道,可以为AudioFormat.CHANNEL_CONFIGURATION_MONO和AudioFormat.CHANNEL_CONFIGURATION_STEREO
* 4、AudioFormat:录制编码格式,可以为AudioFormat.ENCODING_16BIT和8BIT,其中16BIT的仿真性比8BIT好,但是需要消耗更多的电量和存储空间
* 5、BufferSize:录制缓冲大小:可以通过getMinBufferSize来获取
* 这样我们就可以实例化一个AudioRecord对象了
* 二、创建一个文件,用于保存录制的内容
* 同上篇
* 三、打开一个输出流,指向创建的文件
* DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)))
* 四、现在就可以开始录制了,我们需要创建一个字节数组来存储从AudioRecorder中返回的音频数据,但是
* 注意,我们定义的数组要小于定义AudioRecord时指定的那个BufferSize
* short[]buffer = new short[BufferSize/4]
* startRecording()
* 然后一个循环,调用AudioRecord的read方法实现读取
* 另外使用MediaPlayer是无法播放使用AudioRecord录制的音频的,为了实现播放,我们需要
* 使用AudioTrack类来实现
* AudioTrack类允许我们播放原始的音频数据
*
*
* 一、实例化一个AudioTrack同样要传入几个参数
* 1、StreamType:在AudioManager中有几个常量,其中一个是STREAM_MUSIC
* 2、SampleRateInHz:最好和AudioRecord使用的是同一个值
* 3、ChannelConfig:同上
* 4、AudioFormat:同上
* 5、BufferSize:通过AudioTrack的静态方法getMinBufferSize来获取
* 6、Mode:可以是AudioTrack.MODE_STREAM和MODE_STATIC,关于这两种不同之处,可以查阅文档
* 二、打开一个输入流,指向刚刚录制内容保存的文件,然后开始播放,边读取边播放
*
* 实现时,音频的录制和播放分别使用两个AsyncTask来完成
*/
/**
* 利用AudioRecord类实现自己的音频录制程序
* com.hb56.MyAndroidUtil.AudioRecord
*
* @author Admin-zhangyx
*
* create at 2014-10-16 下午2:03:13
*/
public class AudioRecordActivity extends Activity{
private TextView stateView
private Button btnStart, btnStop, btnPlay, btnFinish
private RecordTask recorder
private PlayTask player
private File audioFile
private boolean isRecording = true, isPlaying = false// 标记
private int frequence = 8000// 录制频率,单位hz.这里的值注意了,写的不好,可能实例化AudioRecord对象的时候,会出错。我开始写成11025就不行。这取决于硬件设备
private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO
private int audioEncoding = AudioFormat.ENCODING_PCM_16BIT
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.my_audio_record)
stateView = (TextView) this.findViewById(R.id.view_state)
stateView.setText("准备开始")
btnStart = (Button) this.findViewById(R.id.btn_start)
btnStop = (Button) this.findViewById(R.id.btn_stop)
btnPlay = (Button) this.findViewById(R.id.btn_play)
btnFinish = (Button) this.findViewById(R.id.btn_finish)
btnFinish.setText("停止播放")
btnStop.setEnabled(false)
btnPlay.setEnabled(false)
btnFinish.setEnabled(false)
// 在这里我们创建一个文件,用于保存录制内容
File fpath = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/data/files/")
fpath.mkdirs()// 创建文件夹
try {
// 创建临时文件,注意这里的格式为.pcm
audioFile = File.createTempFile("recording", ".pcm", fpath)
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
public void onClick(View v) {
int id = v.getId()
switch (id) {
case R.id.btn_start:
// 开始录制
// 这里启动录制任务
recorder = new RecordTask()
recorder.execute()
break
case R.id.btn_stop:
// 停止录制
this.isRecording = false
// 更新状态
// 在录制完成时设置,在RecordTask的onPostExecute中完成
break
case R.id.btn_play:
player = new PlayTask()
player.execute()
break
http://www.2cto.com/kf/201503/382894.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)