`
samyou
  • 浏览: 107711 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

audiotrack使用的一个例子

 
阅读更多
package sam.you;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import com.leshi.common.SDcardUtil;


import android.R.integer;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.ActivityInfo;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PixelFormat;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Bitmap.Config;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.hardware.Camera.Size;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.media.ThumbnailUtils;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.provider.ContactsContract;
import android.provider.MediaStore.Video.Thumbnails;
import android.telephony.TelephonyManager;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class AndroidTest extends Activity implements View.OnClickListener,SurfaceHolder.Callback
{
private SurfaceHolder surfaceHolder = null;
private SurfaceView surfaceView = null;
private AudioTrack audioTrack = null;
private Thread writePCMThread = null;
private File audioFile = null;
private FileInputStream fileInputStream = null;
private byte buffer[] = new byte[16*10000];

// The Handler that gets information back from the other threads
private final Handler msgHandler = new Handler()
{
public void handleMessage(Message msg)
{

switch (msg.what)
{


default:
break;


}
}
};




/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
surfaceView = (SurfaceView) findViewById(R.id.surface);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
findViewById(R.id.button1).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
}

public void finish() {
super.finish();
System.out.println("finish");
try {
writePCMThread.interrupt();

} catch (Exception e) {
}
try {
fileInputStream.close();
} catch (Exception e) {
}
try {
audioTrack.stop();
audioTrack.release();
} catch (Exception e) {
}
}



protected void onResume()
{
super.onResume();
System.out.println("back on!!!!!!!!!!!");
initAudioTrack();
audioFile = new File(Environment.getExternalStorageDirectory(),"test.wav");
System.out.println(audioFile.length());
try {
fileInputStream = new FileInputStream(audioFile);
fileInputStream.skip(0x2c);
} catch (Exception e) {
}

writePCMThread = new Thread(new Runnable(){
public void run() {
try
{
while(fileInputStream.read(buffer)>=0)
{
System.out.println("write pcm data");
audioTrack.write(buffer, 0, buffer.length);

}
}
catch (Exception e) {
e.printStackTrace();
}

}
});

}

private void initAudioTrack()
{
int minBufferSize = AudioTrack.getMinBufferSize(0xac44, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
System.out.println("minBufferSize = "+minBufferSize);
audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 0xac44,
AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize*2,AudioTrack.MODE_STREAM);
audioTrack.setStereoVolume(1.0f, 1.0f);// 设置当前音量大小
System.out.println("initAudioTrack over");
audioTrack.play();
}




public void onClick(View v)
{
switch (v.getId()) {
case R.id.button1:
writePCMThread.start();


break;
case R.id.button2:
break;
default:
break;
}


}




public void surfaceCreated(SurfaceHolder holder) {
System.out.println("surfaceCreated()");
this.surfaceHolder = holder;
}

public void surfaceDestroyed(SurfaceHolder holder) {
}

public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
this.surfaceHolder = holder;
}

public void onActivityResult(int requestCode, int resultCode, Intent data)
{





}


   
  

}
分享到:
评论

相关推荐

    Android audiotrack 播放pcm

    以下是一个简单的创建`AudioTrack`对象的例子: ```java int sampleRate = 44100; int channelConfig = AudioFormat.CHANNEL_OUT_MONO; int audioFormat = AudioFormat.ENCODING_PCM_16BIT; int minBufferSize = ...

    audiotrack播放PCM音频数据的例子

    一个使用audiotrack播放PCM音频数据的DEMO,上传的代码工程中有个音频数据文件夹,包含了用于测试的PCM数据文件,详情请看readme.txt;另外代码附详细说明,走过路过的都不要错过了,喜欢就顶下吧

    AudioTrack实现播放PCM音频文件

    在项目PCMAudioPlayerDemo中,我们可以找到一个完整的例子,它演示了如何从PCM文件加载数据并使用AudioTrack进行播放。该示例可能包括了文件读取、AudioTrack实例化、数据写入和播放控制等核心功能。 总结来说,...

    Android MediaCodec解码AAC,AudioTrack播放PCM音频

    `AudioTrack`是一个直接音频输出接口,可以将音频数据传送到设备的音频硬件进行播放。你需要设置适当的音频属性,如采样率、通道数和位深度,确保与解码器输出匹配。 8. **循环处理**: 继续输入AAC数据,处理和播放...

    android开发十大经典例子

    这个例子是关于实现一个基本的图片浏览器应用。它涉及到Android的ImageView组件用于显示图片,以及如何处理图片资源,可能包括从本地存储或网络加载图片。此外,还可能涉及到手势检测,允许用户通过滑动来切换图片...

    《Pro Android Games》第二个例子测试

    本书的第二个例子"AsteroidGame"是一个典型的太空射击类游戏,旨在帮助读者理解和掌握Android游戏的基本架构和编程技巧。在这个测试中,我们将详细探讨这个例子所涵盖的关键知识点。 首先,AsteroidGame展示了如何...

    火山移动组件带音效例子.zip

    【火山移动组件带音效例子】是一个专门针对火山移动平台的音效处理示例,它提供了深入理解如何在火山安卓开发环境中实现音频效果的实践教程。这个压缩包包含了一些关键文件,如“利快云资源网.txt”可能是提供资源...

    Android音视频通话例子

    在Android平台上实现音视频通话功能是一项复杂而关键的技术任务,涉及到多媒体处理、网络通信和用户界面等多个方面。本文将深入探讨如何在Android上构建这样的应用,主要基于标题和描述提供的"Android音视频通话例子...

    ANDROID-AUDIO-SYSTEM-(by-DroidPhone)

    为了更好地理解如何使用 `AudioTrack`,我们可以参考一个具体的例子——`ToneGenerator` 类,它是Android中用于生成电话拨号音和其他音调波形的实现。 ##### 初始化过程 `ToneGenerator` 的初始化函数 `...

    android绝好例子

    4. **音频播放**:"小小的音频播放器.rar"可能是一个简单的音频播放应用实例,它涉及到Android的Media Player API或者AudioTrack类的使用。学习如何加载、播放、控制音轨,以及处理音频流和文件格式是多媒体应用开发...

    android 摩尔斯码(morse code)字母转声音

    在这个例子中,`playTone`函数生成一个正弦波形的音频信号,`playMorseCode`函数则根据摩尔斯码字符串调用`playTone`播放相应的信号。 为了使应用更用户友好,还可以添加一个界面来输入文本,显示转换过程,并提供...

    Android高级应用源码-声波支付例子SinVoice-master.zip

    【Android高级应用源码-声波支付例子SinVoice-master.zip】是一个关于Android平台上的声波支付功能实现的开源项目。这个项目提供了详细的实际操作代码,为开发者提供了学习和参考声波支付技术的机会。声波支付是一种...

    android游戏开发byExample例子

    4. **OpenGL ES**: Android游戏通常使用OpenGL ES进行图形渲染,这是一个针对嵌入式系统的图形库,支持2D和3D图形。在"Android Game by Example"中,我们可能会看到如何使用GLSurfaceView和EGLContext创建图形上下文...

    Android应用源码之声波支付例子SinVoice-master.zip

    【Android应用源码之声波支付例子SinVoice-master.zip】是一个包含声波支付功能实现的Android应用源代码。这个源码库提供了对声波支付技术的深入理解和实践,可以帮助开发者了解如何在Android平台上集成这种新颖的...

    Android自定义音乐播放器的代码例子

    Android自定义音乐播放器的代码例子。支持展示音乐列表、滚动歌词,以及控制栏操作,另附演示用的一剪梅歌曲与歌词。另外演示了MediaRecorder/MediaPlayer组合、AudioRecord/AudioTrack,以及SoundPool对音频的处理...

    android小程序MP3

    `MediaPlayer`是Android提供的一个高级API,适合大多数音频播放需求,而`AudioTrack`则提供了更低级别的控制,适用于需要精细调整音频输出的场景。 2. **创建Android项目** 创建一个新的Android Studio项目,选择...

    ToneGenerator+MessageHandler用法

    这里我们创建了一个使用警报流(ALARM_STREAM)并设置音量为100的ToneGenerator实例。然后,我们可以通过调用startTone()方法来播放预定义的音调: ```java toneGen.startTone(ToneGenerator.TONE_PROP_BEEP); ``` ...

    安卓Andriod源码——声波支付例子SinVoice-master.zip

    【Android声波支付技术解析】 声波支付是一种利用声波进行数据传输的创新..."SinVoice-master"这个项目可能就是一个完整的声波支付示例,包含了实现这一功能所需的全部源代码,对于学习和研究声波支付技术非常有价值。

    android使用webrtc视频对讲实例 端到端

    WebRTC 是由Google维护的一个开源项目,它提供了一系列API,使得开发者可以在浏览器或其他应用程序中进行实时音视频通信,而无需安装额外的插件。WebRTC 支持多种平台,包括Android、iOS、Chrome、Firefox等。 2. ...

    matlab图像相嵌代码-daydayup:一些编码练习

    matlab图像相嵌代码 ...使用AudioTrack和AudioRecord组件录制和播放PCM数据的例子,InteliJ工程 lame 研究lame库的一些代码 my_compiler_os 2004年左右的代码,当时冲动的实现自己的脚本语言解释器和嵌入式OS。不

Global site tag (gtag.js) - Google Analytics