关于AndroidPhone传输数据
来源:互联网 发布:ios 数组转json字符串 编辑:程序博客网 时间:2024/06/01 23:43
暂时引用这一段
static int baudRate = 4800;
static int maxRate = 48000;
static int delayBit = 0;
private static byte ihigh = (byte) (-128);
private static byte ilow = (byte) (16);
AudioTrack audioplayer;
static int minSize;
static byte[] getBuffer(String str) {
int bytesinframe = delayBit + 10;//delay + 8bit + 一个标识开始的位 + 一个标识结束的位
byte[] sendme = str.getBytes();
int n = maxRate / baudRate;
boolean[] bits = new boolean[sendme.length /*\*bytesinframe*/];
byte[] waveform = new byte[(sendme.length/*\*bytesinframe * n*/)];
// 防止失真,延长每个波的变化的播放时间 Arrays.fill(bits, true);
// 当其不断传出电流的时候标志着无信息传送,一旦有低压电流标志开始传送数据
int i, m, k, j = 0;
for (i = 0; i < sendme.length; ++i) {
m = i/*\*bytesinframe*/;
bits[m] = false;
bits[++m] = ((sendme[i] & 1) == 1);
//位操作,也可以先转换成数字再用 Integer.toBinaryString = bits[ ++m]=((sendme[i] & 2) bits[++m] = ((sendme[i] & 4) == 4);
bits[++m] = ((sendme[i] & 8) == 8);
bits[++m] = ((sendme[i] & 16) == 16);
bits[++m] = ((sendme[i] & 32) == 32);
bits[++m] = ((sendme[i] & 64) == 64);
bits[++m] = ((sendme[i] & 128) == 128);
//加上延时的位
for (k = 0; k < bytesinframe - 9; k++) {
bits[++m] = true;
}
}
//转换成需要的byte数组
for (i = 0; i < bits.length; i++) {
for (k = 0; k < n; k++) {
waveform[j++] = (bits[i]) ? ((byte) (ihigh)) : ((byte) (ilow));
}
}
bits = null;
return waveform;
}
public void play(String str) {
byte[] send = getBuffer(str);
minSize = AudioTrack.getMinBufferSize(48000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
audioplayer = new AudioTrack(AudioManager.STREAM_MUSIC, 48000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, minSize, AudioTrack.MODE_STREAM);
audioplayer.play();
audioplayer.write(send, 0, send.length);
audioplayer.stop();
audioplayer.release();
}
}
// 在构造audiotrack的时候
/* minSize=AudioTrack.getMinBufferSize(48000,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT);
audioplayer=new AudioTrack(AudioManager.STREAM_MUSIC,48000,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT,minSize,AudioTrack.MODE_STREAM);
*/
阅读全文
0 0
- 关于AndroidPhone传输数据
- android wear 手表和androidphone 手机之间的数据共享
- 关于SQL分布式数据远程传输问题
- 关于channel实现数据的传输
- 关于 ftpget 和 ftpput命令传输数据
- 关于网络传输数据安全探讨
- 关于表单数据的传输问题
- 关于MySQL允许最大传输数据
- Install XP on AndroidPhone
- 关于数据的异步传输之我见 转载请注明!
- 关于json数据跨域传输的问题
- android 关于网络连接之传输数据节省电量1
- android 关于网络连接之传输数据节省电量2
- WebSocket中关于使用ProtoBuf传输数据介绍js部分
- 关于Ajax调用时后台数据的传输问题
- WebSocket中关于使用ProtoBuf传输数据介绍js部分
- 关于android设备创建热点和传输数据问题
- 关于c#串口传输
- 菜鸟学习历程【21】线程
- java数据结构
- DOS_1
- 写好一份技术简历很重要
- 数据库事务
- 关于AndroidPhone传输数据
- 反思
- 1452: 你家的狗有病吧
- javascript里将函数名字符串转为函数并执行
- GDI+将CDC中画好的图像,保存到文件中
- 安卓 DrawLayout侧滑
- 最长无重复子串
- 尾递归实现斐波那契数
- Kotlin基础