1. android中怎么将音频文件转成Byte
为何要转呢?这个哥们也是不懂,你可以去看一下教程。http://www.eoeandroid.com/thread-565331-1-1.html
2. 我在android编程时,写了一句byte buffer[]=new byte(4*1024),eclipse 显示出错,为什么
如果java环境和eclipse都正常的话,可试一下
Byte[] buffer = new Byte[4*1024];
二楼的
Byte buffer[] = new Byte[4*1024];
这也是一种写法,是正确的。不信你查资料……
3. android如何把byte数据存到内存中并转为bitmap,求高手~~~~~~~~~~~~~~~~~~~~~~~~~~~
import java.io.File;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
public class MainAct extends Activity {
private ImageView img;
//图片路径
private String filepath = "/sdcard/sample.jpg";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
img = (ImageView) findViewById(R.id.img);
File file = new File(filepath);
if (file.exists()) {
Bitmap bm = BitmapFactory.decodeFile(filepath);
//将图片显示到ImageView中
img.setImageBitmap(bm);
}
}
}
请参考
4. android 字符串转byte数组
Android 字符串、byte数组与16进制数组间的转换
<spanstyle="font-family:SimSun;font-size:14px;">//字符串转换成16进制文字列的方法
publicStringtoHex(Stringstr){
StringhexString="0123456789ABCDEF";
byte[]bytes=str.getBytes();
StringBuilderhex=newStringBuilder(bytes.length*2);
for(inti=0;i<bytes.length;i++){
hex.append(hexString.charAt((bytes[i]&0xf0)>>4));//作用同n/16
hex.append(hexString.charAt((bytes[i]&0x0f)>>0));//作用同n
hex.append('');//中间用空格隔开
}
returnhex.toString();
}
//将16进制数组转换为字符串
publicstaticStringdecode(Stringbytes){
StringhexString="0123456789ABCDEF";
ByteArrayOutputStreambaos=newByteArrayOutputStream(bytes.length()/2);
//将每2位16进制整数组装成一个字节
//for(inti=0;i<bytes.length();i+=2)
//baos.write((hexString.indexOf(bytes.charAt(i))<<4|hexString.indexOf(bytes.charAt(i+1))));
//将每3位(第3位为空格)中的前2位16进制整数组装成一个字节
for(inti=0;i<bytes.length();i+=3){
baos.write((hexString.indexOf(bytes.charAt(i))<<4|hexString.indexOf(bytes.charAt(i+1))));
}
returnnewString(baos.toByteArray());
}</span>
详细
5. 求助,求大神,android与串口通信
转载最近做的项目用到了蓝牙串口通讯功能.毕竟是接触到底层的一些东西,让吾等局限于java编程思想的小菜遇到了一些意想不到的问题.
问题一,连接不上蓝牙串口
直接在android自带的蓝牙例子上尝试,发现根本连接不上蓝牙串口,后来对比别人的代码发现uuid不一样.因为以前用过UUID.randomUUID();所以想当然的认为所有uuid都是随机生成的.通过搜索发现,android连接蓝牙串口的话,必须要这个UUID
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
问题二,在读取从蓝牙串口返回的数据时,一直阻塞在inpustream.read(buffer);那里.
起初是因为仿照网上的例子,直接发送指令的16进制字符串过去,返回不到数据.后来通过反编译可以使用的蓝牙串口助手apk发现,需要发送的不是16进制字符串的byte数组.而是将16进制字符串转换成的byte数组.
String string = "01 00 05 07 00 00 00 00";
string = string.replaceAll(" ", ""); byte[] bytes = hexString2Bytes(string);//正确,要发送这个bytes
byte[] bytes = string.getBytes();//错误,发送这个bytes获取不到数据.
附上hexString2Bytes方法
/**
* Convert hex string to byte[] 把为字符串转化为字节数组
*
* @param hexString
* the hex string
* @return byte[]
*/
public static byte[] hexStringToBytes(String hexString) {
hexString = hexString.replaceAll(" ", "");
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase(Locale.getDefault());
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}
/**
* Convert char to byte
*
* @param c
* char
* @return byte
*/
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
得出结论.串口通讯时,如果获取到错误的信息,是不返回数据的.在socket连接时.如果没有获取到数据.inputstream.read(buffer);是会一直阻塞的.
6. android里如何解析音频文件获取标题、专辑、文件名、艺术家
把文件放在res/raw下,程序运行时把它释放到指定目录,代码如下:(供楼主参考)
private final String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/db_exam";
private final String DATABASE_FILENAME = "tel.db";
public void extractDBFileFromRes(){
try {
String dbFileName = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists()){
dir.mkdir();
Log.i("SQLite", "dir made:" + DATABASE_PATH);
} else {
Log.i("SQLite", "dir exist:" + DATABASE_PATH);
}
try {
//如果数据库已经在SD卡的目录下存在,那么不需要重新创建,否则创建文件,并拷贝/res/raw下面的数据库文件
if (!(new File(dbFileName).exists())){
Log.i("SQLite", dbFileName + ":file not exist");
//res/raw数据库作为输出流
InputStream inputStream = this.getResources().openRawResource(R.raw.tel);
//测试
int size = inputStream.available();
Log.i("SQLite", "DATABASE_SIZE:" + 1);
Log.i("SQLite", "count:" + 0);
//用于存放数据库信息的数据流
FileOutputStream fileOutputStream = new FileOutputStream(dbFileName);
byte[] buffer = new byte[8192];
int count = 0;
Log.i("SQLite", "count:" + count);
//把数据写入SD卡目录下
while ((count = inputStream.read(buffer)) > 0 ) {
fileOutputStream.write(buffer, 0, count);
}
fileOutputStream.flush();
fileOutputStream.close();
inputStream.close();
}
} catch (FileNotFoundException e) {
Log.e("Database", "File not found");
e.printStackTrace();
}
} catch (IOException e) {
Log.e("Database", "IO exception");
e.printStackTrace();
}
}
7. Android手机端通过socket接收蓝牙模块串口发来的字符串,出现字符串被截断现象,求解决办法,万分感谢!
在while循环外部的上方申明:
String sda="";
将while循环里面的 String sda = new String(byte_data);
改为:sda+=new String(byte);
最后将while循环里面的 System.out.println("收到的数据sda为:"+sda);
移到while循环外部的下方。
8. Android如何解决大循环中new语句或者某些方法引发的频繁的GC_FOR_ALLOC耽误很长时间
你尝试把一些需要经常使用的变量定义到for循环外试试看 比如 byte[] content 这样应该可以避免频繁被回收
9. Android 怎样用sqlite储存byte数组
在进行Android开发过程中,我们经常会接触到Drawable对象(官方开发文档:A Drawable is a general abstraction for "something that can be drawn."),那么,若要使用数据库来进行存储及读取.
@Override
public void onCreate(SQLiteDatabase database) {
executeSQLScript(database, "create.sql");
}
private void executeSQLScript(SQLiteDatabase database, string dbname){
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte buf[] = new byte[1024];
int len;
AssetManager assetManager = context.getAssets();
InputStream inputStream = null;
try{
inputStream = assetManager.open(dbname);
while ((len = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, len);
}
outputStream.close();
inputStream.close();
String[] createScript = outputStream.toString().split(";");
for (int i = 0; i < createScript.length; i++) {
String sqlStatement = createScript[i].trim();
// TODO You may want to parse out comments here
if (sqlStatement.length() > 0) {
database.execSQL(sqlStatement + ";");
}
}
} catch (IOException e){
// TODO Handle Script Failed to Load
} catch (SQLException e) {
// TODO Handle Script Failed to Execute
}
}
10. WebService返回byte[],在Android怎么才能接收byte[]啊,跪求大神
1、使用ISO 8859-1编码将字节数组转为字符串;
android接收到之后使用byte[] receive = String.getBytes("ISO 8859-1");
2、还可以将字节数组拼成字符串,用,符号隔开每个值。
Arrays.toString(byte[] b);可以将字节数组转成这种格式。
?
其实字节也是数值型。
importjava.io.UnsupportedEncodingException;
importjava.util.Arrays;
importjava.util.Random;
publicclassMainClass{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
byte[]rand=newbyte[256];
newRandom().nextBytes(rand);
Stringtranslation=null;
try{
translation=newString(rand,"ISO-8859-1");
}catch(UnsupportedEncodingExceptione){
//TODO自动生成的catch块
e.printStackTrace();
}
System.out.println("要传输的内容:"+translation);
System.out.println("模拟传输过去...");
byte[]receive=null;
try{
receive=translation.getBytes("ISO-8859-1");
}catch(UnsupportedEncodingExceptione){
//TODO自动生成的catch块
e.printStackTrace();
}
System.out.println("传输前后的内容是否相同:"+Arrays.equals(rand,receive));
}
}