- 浏览: 107711 次
- 性别:
- 来自: 北京
最新评论
-
rimanyuan:
是好很多,但是还是断断续续,你看我下我的代码:public v ...
关于android的audiotrack播放声音断断续续的问题 -
cuisuqiang:
如果是主动切断会报错,不过如果是网线掉了,则不会报错!
java socket判断客户端是否断开连接
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)
{
}
}
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)
{
}
}
发表评论
-
判断用户名只支持中英文和下划线
2011-12-30 11:24 1735public static boolean checkL ... -
关于android layout_gravity不起作用
2011-12-01 17:16 1730在linerlayout不居中,如果方向设为垂直,则垂直方向的 ... -
软键盘挡住edittext的解决
2011-11-24 11:15 1110在setcontentview前加上getWindow().s ... -
android点亮(唤醒)屏幕
2011-11-16 17:25 2238KeyguardManager keyguardMana ... -
关于android的audiotrack播放声音断断续续的问题
2011-10-18 16:31 6772int bufsize = AudioTrack.get ... -
getSharedPreferences和getDefaultSharedPreferences用法差别
2011-10-12 14:54 26715自定义的一些偏好设置用getSharedPreferences ... -
华为u8500开启log方法
2011-09-29 20:48 2256网上也有很多方法,有人说还需要重启手机,太麻烦了,我自己试了 ... -
android的activity操作流程
2011-09-18 17:30 1017今天总结了一下android页面的状态流程,发上来大家看看 ... -
JDK中的URLConnection参数详解(转)
2011-09-04 14:42 664针对JDK中的URLConnection连接Servlet的问 ... -
关于androidJNIload 错误
2011-08-05 17:26 936今天在移植代码时出现了JNI的unsatisfactory l ... -
在xml里设置全屏
2011-06-17 19:48 953<activity android:name=" ... -
获取android手机了通讯录和sim卡联系人
2011-05-17 17:18 5773private ArrayList<SamConta ... -
一个简单的获取通讯录联系人手机号
2011-05-07 10:43 1233private ArrayList<SamConta ... -
关于录音时的buffer overflow
2011-05-04 12:14 1749开始为了节约内存,每一次readbuffer之后就会调用sys ... -
电信手机通过基站获取gps
2011-04-27 14:24 1313TelephonyManager manager = (T ... -
bimap压缩
2011-04-09 10:22 957public static Bitmap bitmapRo ... -
android sqlite的一些简单的操作
2011-04-08 14:55 1472//MySQLHelper .java public c ... -
android系统图标集
2011-04-07 10:17 1073给个链接吧,从别人那里看来的 http://since2006 ...
相关推荐
以下是一个简单的创建`AudioTrack`对象的例子: ```java int sampleRate = 44100; int channelConfig = AudioFormat.CHANNEL_OUT_MONO; int audioFormat = AudioFormat.ENCODING_PCM_16BIT; int minBufferSize = ...
一个使用audiotrack播放PCM音频数据的DEMO,上传的代码工程中有个音频数据文件夹,包含了用于测试的PCM数据文件,详情请看readme.txt;另外代码附详细说明,走过路过的都不要错过了,喜欢就顶下吧
在项目PCMAudioPlayerDemo中,我们可以找到一个完整的例子,它演示了如何从PCM文件加载数据并使用AudioTrack进行播放。该示例可能包括了文件读取、AudioTrack实例化、数据写入和播放控制等核心功能。 总结来说,...
`AudioTrack`是一个直接音频输出接口,可以将音频数据传送到设备的音频硬件进行播放。你需要设置适当的音频属性,如采样率、通道数和位深度,确保与解码器输出匹配。 8. **循环处理**: 继续输入AAC数据,处理和播放...
这个例子是关于实现一个基本的图片浏览器应用。它涉及到Android的ImageView组件用于显示图片,以及如何处理图片资源,可能包括从本地存储或网络加载图片。此外,还可能涉及到手势检测,允许用户通过滑动来切换图片...
本书的第二个例子"AsteroidGame"是一个典型的太空射击类游戏,旨在帮助读者理解和掌握Android游戏的基本架构和编程技巧。在这个测试中,我们将详细探讨这个例子所涵盖的关键知识点。 首先,AsteroidGame展示了如何...
【火山移动组件带音效例子】是一个专门针对火山移动平台的音效处理示例,它提供了深入理解如何在火山安卓开发环境中实现音频效果的实践教程。这个压缩包包含了一些关键文件,如“利快云资源网.txt”可能是提供资源...
在Android平台上实现音视频通话功能是一项复杂而关键的技术任务,涉及到多媒体处理、网络通信和用户界面等多个方面。本文将深入探讨如何在Android上构建这样的应用,主要基于标题和描述提供的"Android音视频通话例子...
为了更好地理解如何使用 `AudioTrack`,我们可以参考一个具体的例子——`ToneGenerator` 类,它是Android中用于生成电话拨号音和其他音调波形的实现。 ##### 初始化过程 `ToneGenerator` 的初始化函数 `...
4. **音频播放**:"小小的音频播放器.rar"可能是一个简单的音频播放应用实例,它涉及到Android的Media Player API或者AudioTrack类的使用。学习如何加载、播放、控制音轨,以及处理音频流和文件格式是多媒体应用开发...
在这个例子中,`playTone`函数生成一个正弦波形的音频信号,`playMorseCode`函数则根据摩尔斯码字符串调用`playTone`播放相应的信号。 为了使应用更用户友好,还可以添加一个界面来输入文本,显示转换过程,并提供...
【Android高级应用源码-声波支付例子SinVoice-master.zip】是一个关于Android平台上的声波支付功能实现的开源项目。这个项目提供了详细的实际操作代码,为开发者提供了学习和参考声波支付技术的机会。声波支付是一种...
4. **OpenGL ES**: Android游戏通常使用OpenGL ES进行图形渲染,这是一个针对嵌入式系统的图形库,支持2D和3D图形。在"Android Game by Example"中,我们可能会看到如何使用GLSurfaceView和EGLContext创建图形上下文...
【Android应用源码之声波支付例子SinVoice-master.zip】是一个包含声波支付功能实现的Android应用源代码。这个源码库提供了对声波支付技术的深入理解和实践,可以帮助开发者了解如何在Android平台上集成这种新颖的...
Android自定义音乐播放器的代码例子。支持展示音乐列表、滚动歌词,以及控制栏操作,另附演示用的一剪梅歌曲与歌词。另外演示了MediaRecorder/MediaPlayer组合、AudioRecord/AudioTrack,以及SoundPool对音频的处理...
`MediaPlayer`是Android提供的一个高级API,适合大多数音频播放需求,而`AudioTrack`则提供了更低级别的控制,适用于需要精细调整音频输出的场景。 2. **创建Android项目** 创建一个新的Android Studio项目,选择...
这里我们创建了一个使用警报流(ALARM_STREAM)并设置音量为100的ToneGenerator实例。然后,我们可以通过调用startTone()方法来播放预定义的音调: ```java toneGen.startTone(ToneGenerator.TONE_PROP_BEEP); ``` ...
【Android声波支付技术解析】 声波支付是一种利用声波进行数据传输的创新..."SinVoice-master"这个项目可能就是一个完整的声波支付示例,包含了实现这一功能所需的全部源代码,对于学习和研究声波支付技术非常有价值。
WebRTC 是由Google维护的一个开源项目,它提供了一系列API,使得开发者可以在浏览器或其他应用程序中进行实时音视频通信,而无需安装额外的插件。WebRTC 支持多种平台,包括Android、iOS、Chrome、Firefox等。 2. ...
matlab图像相嵌代码 ...使用AudioTrack和AudioRecord组件录制和播放PCM数据的例子,InteliJ工程 lame 研究lame库的一些代码 my_compiler_os 2004年左右的代码,当时冲动的实现自己的脚本语言解释器和嵌入式OS。不