这些方法在开发中用的上,在这里记录一下,以后查阅。
转载请注明出处: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文件
分享到:
相关推荐
1.1 课题背景………………………………………………………………………………………...1 1.2 国内外研究现状…………………………………………………………………………….....2 1.3 发展趋势…………………………...
android xts问题方法总结
13 Android Code Challenge……………… 14 创建Android 应用程序…………………15 剖析一个Android 应用程序……………………… 15 Activity…………………………………………………………………15 Intent ...
Android的Handler使用方法总结,不错的文档,跟大家分享分享
总结来说,通过Android的WebView组件和`addJavascriptInterface`,我们可以轻松地在JavaScript和Android之间建立通信桥梁,传递包括JSON在内的各种数据。这种技术在混合式应用开发中十分常见,帮助开发者利用...
Android IMF输入法总结 Android IMF 输入法总结是 Android 1.5 新添加的一个重要功能,用来支持软键盘、各种的输入法。 IMF Input Method Framework 的主要组件包括 Input Method Manager (IMM)、Input Method (IME...
《Android专家面试问答指南》 在移动开发领域,Android占据着重要的地位,而对Android开发者的需求也日益增长。为了在竞争激烈的市场中脱颖而出,开发者需要...记住,持续学习和实践是成为优秀Android开发者的关键。
I. What is in the Box….……………………………….... Featured Apps……………………………………………………..….….35-76 VI. Learn more about Android STB......................................77-92
在Android开发中,ProgressDialog是一种常用的UI组件,用于在执行耗时操作时向用户展示进度或提示信息,如“请稍后……”。为了提供更个性化的用户体验,开发者有时需要自定义ProgressDialog,比如添加滚动条效果。...
第一章 前言 ……………………………………………………………………………………………… 2 第二章 可行性论证 …………………………………………………………………………………… 3 第三章 运行环境及开发工具...
2019年android学习方法归纳总结.pdf
在Android平台上开发应用程序时,经常会遇到需要进行基本数学计算的任务,比如计算1到100的和。这个任务是编程入门的经典案例,它涉及到循环、累加器变量和用户界面的交互。以下将详细讲解如何在Android环境中实现这...
Android sdk 在首次安装好后 要用SDK Manager.exe进行更新,因服务器在国外,下载经常断开及下载非常慢 上面我把SDK的更新所需要各文件下载地址提供出来,用下载工具下载后即可使用,上面已更新到2014年2月6日 第一...
体验最新的Android...……………………………………………………………………………… 阿里云盘不限速链接分先 …………………………………………………… 先到先得 …………………………………………………………
在Android应用开发中,为了确保用户始终使用最新版本的应用,开发者通常会实现自动更新功能。本文将详细探讨如何在Android应用程序中实现自动检查并下载新版本的代码逻辑,以达到无缝更新的效果。 首先,我们需要一...
在Android开发中,`Gallery`组件是Android早期版本(API level 16及以下)提供的一种可以水平滑动浏览图片或项目的控件。它允许用户通过手指滑动来浏览一串连续的视图,通常用于展示照片或者进行选择操作。然而,...
在Android应用开发中,自动更新功能是提升用户体验和确保应用安全的重要组成部分。它允许开发者发布新版本的应用,而用户无需手动查找和下载更新,系统会在后台自动完成这一过程。本篇文章将详细介绍如何在Android...
在Android平台上,版本更新是确保应用安全性和功能完善性的重要环节。这个“android版本更新 demo”项目旨在展示如何实现一个有效的版本更新系统,包括检查新版本、下载更新包以及自动升级等功能。以下是对这些关键...
【一线互联网大厂Java核心面试题库】Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等..
Android Notification使用方法总结 Android Notification是Android系统中的一种重要机制,用于向用户显示重要信息,例如来自应用程序的更新、警报、提醒等。下面是Android Notification使用方法总结的相关知识点: ...