`
heji
  • 浏览: 88849 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

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文件






分享到:
评论

相关推荐

    android连连看毕业论文

    1.1 课题背景………………………………………………………………………………………...1 1.2 国内外研究现状…………………………………………………………………………….....2 1.3 发展趋势…………………………...

    android xts问题方法总结

    android xts问题方法总结

    andbook中文版

    13 Android Code Challenge……………… 14 创建Android 应用程序…………………15 剖析一个Android 应用程序……………………… 15 Activity…………………………………………………………………15 Intent ...

    JS调用Android方法,向Android方法传递json数据

    总结来说,通过Android的WebView组件和`addJavascriptInterface`,我们可以轻松地在JavaScript和Android之间建立通信桥梁,传递包括JSON在内的各种数据。这种技术在混合式应用开发中十分常见,帮助开发者利用...

    Android IMF输入法总结

    Android IMF输入法总结 Android IMF 输入法总结是 Android 1.5 新添加的一个重要功能,用来支持软键盘、各种的输入法。 IMF Input Method Framework 的主要组件包括 Input Method Manager (IMM)、Input Method (IME...

    Awesome-Android-Interview:很棒的android专家访谈问答(持续更新中……)

    《Android专家面试问答指南》 在移动开发领域,Android占据着重要的地位,而对Android开发者的需求也日益增长。为了在竞争激烈的市场中脱颖而出,开发者需要...记住,持续学习和实践是成为优秀Android开发者的关键。

    Android Set-Top-Box (STB) USER GUIDE

    I. What is in the Box….……………………………….... Featured Apps……………………………………………………..….….35-76 VI. Learn more about Android STB......................................77-92

    Android中自定义ProgressDialog实现加载滚动条效果,例如显示“请稍后……”

    在Android开发中,ProgressDialog是一种常用的UI组件,用于在执行耗时操作时向用户展示进度或提示信息,如“请稍后……”。为了提供更个性化的用户体验,开发者有时需要自定义ProgressDialog,比如添加滚动条效果。...

    数据库应用图书管理系统实例包含源代码和技术文档

    第一章 前言 ……………………………………………………………………………………………… 2 第二章 可行性论证 …………………………………………………………………………………… 3 第三章 运行环境及开发工具...

    2019年android学习方法归纳总结.pdf

    2019年android学习方法归纳总结.pdf

    用andriod编写1+2+……+100的和

    在Android平台上开发应用程序时,经常会遇到需要进行基本数学计算的任务,比如计算1到100的和。这个任务是编程入门的经典案例,它涉及到循环、累加器变量和用户界面的交互。以下将详细讲解如何在Android环境中实现这...

    Android sdk 各版本离线安装包下载地址及方法(解决更新慢)

    Android sdk 在首次安装好后 要用SDK Manager.exe进行更新,因服务器在国外,下载经常断开及下载非常慢 上面我把SDK的更新所需要各文件下载地址提供出来,用下载工具下载后即可使用,上面已更新到2014年2月6日 第一...

    AndroidStudio 3.1

    体验最新的Android...……………………………………………………………………………… 阿里云盘不限速链接分先 …………………………………………………… 先到先得 …………………………………………………………

    Android应用自动更新代码实现

    在Android应用开发中,为了确保用户始终使用最新版本的应用,开发者通常会实现自动更新功能。本文将详细探讨如何在Android应用程序中实现自动检查并下载新版本的代码逻辑,以达到无缝更新的效果。 首先,我们需要一...

    Android 重写Gallery

    在Android开发中,`Gallery`组件是Android早期版本(API level 16及以下)提供的一种可以水平滑动浏览图片或项目的控件。它允许用户通过手指滑动来浏览一串连续的视图,通常用于展示照片或者进行选择操作。然而,...

    android app自动更新功能的实现

    在Android应用开发中,自动更新功能是提升用户体验和确保应用安全的重要组成部分。它允许开发者发布新版本的应用,而用户无需手动查找和下载更新,系统会在后台自动完成这一过程。本篇文章将详细介绍如何在Android...

    android版本更新 demo

    在Android平台上,版本更新是确保应用安全性和功能完善性的重要环节。这个“android版本更新 demo”项目旨在展示如何实现一个有效的版本更新系统,包括检查新版本、下载更新包以及自动升级等功能。以下是对这些关键...

    持续更新从Java到Android的一些面试题总结.zip

    【一线互联网大厂Java核心面试题库】Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等..

    Android Notification使用方法总结

    Android Notification使用方法总结 Android Notification是Android系统中的一种重要机制,用于向用户显示重要信息,例如来自应用程序的更新、警报、提醒等。下面是Android Notification使用方法总结的相关知识点: ...

    Android原生定位的方法(GPS,网络定位)源码

    Android开发之原生定位的方法(GPS,网络定位)更多查看我的博客:https://blog.csdn.net/xiayiye5/article/details/83686286

Global site tag (gtag.js) - Google Analytics