android一些有用的方法总结(持续更新……)

这些方法在开发中用的上,在这里记录一下,以后查阅。
转载请注明出处:http://heji.iteye.com/blog/757556,谢谢

Bitmap转换成Byte数组:
static byte[] bitmapToBytes(Bitmap bitmap) {
int size = bitmap.getWidth() * bitmap.getHeight() * 4;
ByteArrayOutputStream out = new ByteArrayOutputStream(size);
try {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
return out.toByteArray();
} catch (IOException e) {
return null;
}
}



把View转换成Bitmap

/**
* 把一个View的对象转换成bitmap
*/
static Bitmap getViewBitmap(View v) {

v.clearFocus();
v.setPressed(false);

//能画缓存就返回false
boolean willNotCache = v.willNotCacheDrawing();
v.setWillNotCacheDrawing(false);
int color = v.getDrawingCacheBackgroundColor();
v.setDrawingCacheBackgroundColor(0);
if (color != 0) {
v.destroyDrawingCache();
}
v.buildDrawingCache();
Bitmap cacheBitmap = v.getDrawingCache();
if (cacheBitmap == null) {
Log.e(TAG, "failed getViewBitmap(" + v + ")", new RuntimeException());
return null;
}
Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);
// Restore the view
v.destroyDrawingCache();
v.setWillNotCacheDrawing(willNotCache);
v.setDrawingCacheBackgroundColor(color);
return bitmap;
}


Stream转换成Byte
static byte[] streamToBytes(InputStream is) {
ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
byte[] buffer = new byte[1024];
int len;
try {
while ((len = is.read(buffer)) >= 0) {
os.write(buffer, 0, len);
}
} catch (java.io.IOException e) {

}
return os.toByteArray();
}



BitmapDrawble to Bitmap :
getBitmap()



Bitmap to BitmapDrawable :

public static BitmapDrawable bitmapToBitmapDrawable(Bitmap bitmap, Context context) {
return new BitmapDrawable(context.getResources(), bitmap);
}



/** 重新编码Bitmap
*
* @param src
* 需要重新编码的Bitmap
*
* @param format
* 编码后的格式(目前只支持png和jpeg这两种格式)
*
* @param quality
* 重新生成后的bitmap的质量
*
* @return
* 返回重新生成后的bitmap
*/
private static Bitmap codec(Bitmap src, Bitmap.CompressFormat format,
int quality) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
src.compress(format, quality, os);

byte[] array = os.toByteArray();
return BitmapFactory.decodeByteArray(array, 0, array.length);
}



读取raw资源文件中的mp3文件,然后通过音乐播放器播放:

/**
* 把mp3文件写入卡
*
* @param fileName
* 输出的文件名(全路径)
* @param context
* context对象
*/
private void writeMP3ToSDcard(String fileName, Context context) {
byte[] buffer = new byte[1024 * 8];
int read;
BufferedInputStream bin = new BufferedInputStream(context.getResources().openRawResource(R.raw.ring));
try {
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(fileName));
while ((read = bin.read(buffer)) > -1) {
bout.write(buffer, 0, read);
}
bout.flush();
bout.close();
bin.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}


Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(newFile("XXXXmp3的文件全路径")),"audio/*");
startActivity(intent);



拦截Menu
重写public boolean onMenuOpened(int featureId, Menu menu)
返回值是false系统menu不会弹出,返回值是true系统menu会弹出,所以为了拦截Menu,返回值一定要是false
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
//TODO
return false;
}



通过反射获得ITelephony对象,并调用其endCall()方法
private void invokeCallEnd() {
ITelephony iTelephony = null;
TelephonyManager telephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
try {
Method getITelephonyMethod = TelephonyManager.class.getDeclaredMethod("getITelephony", (Class[]) null);
getITelephonyMethod.setAccessible(true);
iTelephony = (ITelephony) getITelephonyMethod.invoke(telephonyMgr, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
try {
iTelephony.endCall();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

ITelephony.aidl是源码中的服务,需要放在所建的项目中,包名要和ITelephony.aidl文件中的包名一致,附件是ITelephony.aidl文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值