分类: [Android]

Android Bitmap,byte[],Drawable,InputStream相互转化

1 在surfaceview中结合Camera获取到摄像头图像,这段代码是我程序中的一部分 @Override public void onPreviewFrame(final byte[] data, Camera camera) { camera.setPreviewCallback(null); if (mCamera == null) return; Camera.Parameters parameters = camera.getParameters(); int width = parameters.getPreviewSize().width; int height = parameters.getPreviewSize().height; YuvImage yuv = new YuvImage(data, parameters.getPre ......

Android的消息循环机制 Looper Handler类分析 

Android的消息循环机制 Looper Handler类分析   Looper类说明    Looper 类用来为一个线程跑一个消息循环。 线程在默认情况下是没有消息循环与之关联的,Thread类在run()方法中的内容执行完之后就退出了,即线程做完自己的工作之后就结束了,没有循环的概念。 调用Looper类的 prepare() 方法可以为当前线程创建一个消息循环,调用loop() 方法使之处理信息,直到循环结束。 大多数和消息循环的交互是通过 Handler 类进行的。 下面是一个典型的实现: class LooperThread extends Thread { public Handler mHandle ......

Andriod获取手机App信息(区分系统App,获取签名)

  主界面获取列表,其中需要判断App是否为用户App,代码如下 /** * 判断是否为用户APP * * @param info * @return */ public static boolean isUesrApp(ApplicationInfo info) { if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { // 代表的是系统的应用,但是被用户升级了. 用户应用 return true; } else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { // 代表的用户的应用 return true; } return false; } 点击详情之后会获 ......

Android Webview实现文件下载功能

最开始的时候走入了一个误区,以为webview中下载文件,需要主动拦截shouldOverrideUrlLoading函数中下来类文件,然后自己去实现文件的下载,当时还在考虑要怎么去获取文件类型(通过HttpURLConnection获取http返回头中的Content-disposition来获取文件),哪些文件是可以下载,哪些文件是html直接展示的,这种思路完全是错误的,文件种类太多,没法判断哪些是用户主动需要下载的。陷入思路的误区,后来发现webview有一个downloadListense函数,简单阅读才发现,之前的哪些思路在webview中个已经被封装好了,只需要简单的处理文件下载 ......

Android 判断文件类型MIME

MIME:全称Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务。它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 在Android中通过文件的MIME类型来判断有哪些应用程序可以处理这些文件,并使用其中的某一个应用程序(如果有多个可选的应用程序,则用户必须指定一 ......

android如何实现开机自动启动Service或app

第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class BootBroadcastReceiver extends BroadcastReceiver { //重写onReceive方法 @Override public void onReceive(Context context, Intent intent) { //后边的XXX.c ......

Android业务组件化之URL Scheme使用

前言: 最近公司业务发展迅速,单一的项目工程不再适合公司发展需要,所以开始推进公司APP业务组件化,很荣幸自己能够牵头做这件事,经过研究实现组件化的通信方案通过URL Scheme,所以想着现在还是在预研阶段,很有必要先了解一下URL Scheme,看看是如何使用的?其实在之前做Hybrid混合编程的时候就接触过URL Scheme,总来的来说还不算陌生,今天就来回顾总结一下。业务组件化相关博客地址(Android业务组件化之现状分析与探讨) 业务组件化相关文章地址: Android业务组件化之现状分析与探讨 Android业务组件化之URL Scheme使用 ......

Android 通过网页打开自己的APP(scheme)

一:Android 通过网页打开自己的APP(scheme) 通过用手机的浏览器(内置,第三方都可)访问一个网页,实现点击一个链接启动自己的应用,并传递数据。 首先在Mainifest文件里面对要启动的Activity添加一个过滤器。 <activity android:name="com.example.helloworld.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="a ......

Android 打开本地第三方应用,以及第三方App列表

获取第三方App包名和Main Activity才能启动第三方的App,获取的方法是,先安装需要获取的App,然后写一个demo获取所有App的packagename和main activity,函数实现如下: private List<ResolveInfo> getAppInfo(){ Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); PackageManager mPackageManager = this.getPackageManager(); List<ResolveInfo> mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0); //按包名 ......

解决LinearLayout中控件不能居右对齐

解决LinearLayout中控件不能居右对齐 在LinearLayout布局时使用右对齐(android:layout_gravity=”right”)控件对齐方式不生效,需要设置  android:layout_weight=”1″  才能右对齐控件,原因在于后者把位置平分了。 <LinearLayout android:gravity="right" android:layout_margin="2dip" android:orientation="horizontal" android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" > ......

Android常用系统广播

//关闭或打开飞行模式时的广播 Intent.ACTION_AIRPLANE_M;   //充电状态,或者电池的电量发生变化;//电池的充电状态、电荷级别改变,不能通过组建声; Intent.ACTION_BATTERY_CH;   //表示电池电量低 Intent.ACTION_BATTERY_LO;   //表示电池电量充足 Intent.ACTION_BATTERY_OK;   //关闭或打开飞行模式时的广播 Intent.ACTION_AIRPLANE_MODE_CHANGED;   //充电状态,或者电池的电量发生变化//电池的充电状态、电荷级别改变,不能通过组建声明接收这个广播,只有通过Context.registerReceiver()注册 Intent.ACTION_ ......

Android代码资源的国际化

internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n。 一般用语言_地区的形式表示一种语言,如  zh_CN, zh_TW.   各国语言缩写  http://www.loc.gov/standards/iso639-2/php/code_list.php 国家和地区简写 http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html 国家_地区语言速查表:http://www.cnblogs.com/Mien/archive/2008/08/22/1273950.html   常见的有: zh_cn: 简体中文 zh_hk: 繁体中文(中国香港) zh_tw: 繁体中文 ......

android实现多语言支持

参考: 1.https://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources 2.http://www.loc.gov/standards/iso639-2/php/code_list.php 我们知道,建好一个android 的项目后,默认的res下面 有layout、values、drawable等目录。这些都是程序默认的资源文件目录,如果要实现多语言版本的话,我们就要添加要实现语言的对应的资源文件。步骤如下: 1)创建本地文件夹和字符串文件 为了支持更多语言,在res/中创建其他的values扩展的文件夹,并在文件夹名后加上一个横线和国家的ISO码。例如,v ......

JNI学习(三)、JNI本地方法访问Java端的属性和方法

在JNI调用中,肯定会涉及到本地方法操作Java类中数据和方法。在Java1.0中“原始的”Java到C的绑定中,程序员可以直接访问对象数据域。然而,直接方法要求虚拟机暴露他们的内部数据布局,基于这个原因,JNI要求程序员通过特殊的JNI函数来获取和设置数据以及调用java方法。 一、取得代表属性和方法的jfieldID和jmethodID 为了在C/C++中表示属性和方法,JNI在jni.h头文件中定义了jfieldID和jmethodID类型来分别代表Java端的属性和方法。我们在访问或是设置Java属性的时候,首先就要先在本地代码取得代表该Java属性的jfieldID,然后才能 ......

JNI学习(二)、JNI基本语言知识

一、本地方法的参数 如何本地方法声明为static,那么生成的头文件中的本地方法形式如下: JNIEXPORT void JNICALL Java_com_tao_test_NativeTest_sayHello  (JNIEnv * , jclass); 这两个参数的意思是什么:JNIEnv类型实际上代表了Java环境。通过这个JNIEnv*指针,就可以对Java端的代码进行操作。例如,创建Java类的对象,调用Java对象的方法,获取Java对象的属性等等。JNIEnv的指针会被JNI传入到本地方法的实现函数中来对Java端的代码进行操作。而jclass,则代表调用这个静态方法类的Class对象,即该Class类的字节码。 如何本地方 ......

JNI学习(一)、JNI简介和HelloWorld示例 – Kilnn – 博客频道 – CSDN.NET

参考:Java核心技术   传智播客视频 sun官方JNI部分:http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html#wp23124 在Java中,有时候我们不得不要去使用其他语言的代码,比如说: 1、你的应用需要访问系统的各个特性和设备,这些特性和设备通过java平台是无法访问的。 2、你已经有了大量的测试过和调试过的用另一种语言编写的代码,并且知道如何将其导出到所有的目标平台上。 3、通过基础测试,你已经发现所编写的Java代码比用其他语言编写的等价代码要慢得多。 Java平台有一个用于和本地C代码进行互操作的AP ......

天天写业务代码的那些年,我们是如何成长过来的 – Phodal’s zenthink – 博客频道 – CSDN.NET

比起写业务代码更不幸的是,主要工作是修 Bug,bug,buG, bUg。 在一家大的公司里,不同的人总会有不同的运气: 运气好的人遇上一个好的项目,升职加薪,从此就走上了人生的巅峰。 运气差的人摊上一个差的项目,升不了职,少加了薪,并且还获得不了技术成长。 我刚毕业那会儿,所在团队的主要工作是,维护一个『又老又旧』的系统。比起写业务代码更不幸的是,我们的主要工作是修 Bug,bug,buG, bUg。 那一年多里,尽管都是维护旧系统和少量的新需求,我们还是在飞速的成长~~。而来源主要是: 组内技术活动。 花时间投入练习。 ......

Android应用设置多个启动图标

如何给一个应用设置多个应用图标 1. 如何给一个应用设置多个入口,在launcher桌面上存在多个启动图标? 我们知道,设置一个应用的入口Activity,只需要在AndroidMainfest.xml文件中,在注册activity的节点下添加intent-filter,并设置action属性为acion.MAIN, category属性为category.LAUNCHER,应用就会将此activity作为应用程序的入口 <activity android:name=".TestInputActivity" android:windowSoftInputMode="adjustResize" android:icon="@mipmap/f_homepage_affari_notice_icon" ......