Android应用
布衣僧
助人如助己,还人心愿,如还自己心愿。
展开
-
Androidx学习笔记(38)--- 使用HttpClient框架做GET提交
发送get请求创建一个客户端对象HttpClient client = new DefaultHttpClient();创建一个get请求对象HttpGet hg = new HttpGet(path);发送get请求,建立连接,返回响应头对象HttpResponse hr = hc.execute(hg);获取状态行对象原创 2016-02-02 17:19:06 · 656 阅读 · 0 评论 -
Androidx学习笔记(48)--- 创建Activity
创建Activity需要在清单文件中为其配置一个activity标签标签中如果带有这个子节点,则会在系统中多创建一个快捷图标 一个应用程序可以在桌面创建多个快捷图标。activity的名称、图标可以和应用程序的名称、图标不相同android:icon="@drawable/ic_launcher"android:label="@s原创 2016-02-03 22:20:00 · 393 阅读 · 0 评论 -
Androidx学习笔记(63)---电话录(窃)音(听)机(器)
电话状态:空闲状态、响铃状态、接听状态获取电话管理器,设置侦听TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);侦听原创 2016-02-24 19:38:24 · 529 阅读 · 0 评论 -
Androidx学习笔记(64)---服务两种启动方式
服务两种启动方式startService:服务被启动之后,跟启动它的组件没有一毛钱关系bindService:跟启动它的组件同生共死绑定服务和解绑服务的生命周期方法:onCreate->onBind->onUnbind->onDestroy开启方式startService该方法启动的服务所在的进程属于服务进程Activity一旦启动服务,服务就跟Ac原创 2016-02-24 19:39:39 · 528 阅读 · 0 评论 -
Androidx学习笔记(65)--- 通过绑定服务调用服务里的方法
把服务看成一个领导,服务中有一个banZheng方法,如何才能访问?绑定服务时,会触发服务的onBind方法,此方法会返回一个Ibinder的对象给MainActivity,通过这个对象访问服务中的方法绑定服务Intent intent = new Intent(this, BanZhengService.class);bindService(intent, conn, BIND_A原创 2016-02-24 19:40:06 · 630 阅读 · 0 评论 -
Androidx学习笔记(66)--- 简单音乐播放器原理
Activitypublic class MainActivity extends Activity { MusicInterface mi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se原创 2016-02-24 19:41:09 · 648 阅读 · 0 评论 -
Androidx学习笔记(67)--- 使用代码注册广播接收者(实现屏幕锁屏和解锁)
使用代码配置广播接收者可以使用清单文件注册广播一旦发出,系统就会去所有清单文件中寻找,哪个广播接收者的action和广播的action是匹配的,如果找到了,就把该广播接收者的进程启动起来可以使用代码注册需要使用广播接收者时,执行注册的代码,不需要时,执行解除注册的代码特殊的广播接收者安卓中有一些广播接收者,必须使用代码注册,清单文件注册是无效的屏幕锁屏和原创 2016-02-24 19:41:39 · 1176 阅读 · 0 评论 -
Androidx学习笔记(68)--- 服务分类
服务的分类本地服务:指的是服务和启动服务的activity在同一个进程中远程服务:指的是服务和启动服务的activity不在同一个进程中远程服务只能隐式启动,类似隐式启动Activity,在清单文件中配置Service标签时,必须配置intent-filter子节点,并指定action子节点 远程服务PublicBusiness.aidl 注意没有publi原创 2016-02-24 19:42:15 · 391 阅读 · 0 评论 -
Androidx学习笔记(69)--- AIDL
AIDLAndroid interface definition language安卓接口定义语言作用:跨进程通信应用场景:远程服务中的中间人对象,其他应用是拿不到的,那么在通过绑定服务获取中间人对象时,就无法强制转换,使用aidl,就可以在其他应用中拿到中间人类所实现的接口AIDLAndroid interface definition language进程间通信原创 2016-02-24 19:42:51 · 564 阅读 · 0 评论 -
Androidx学习笔记(70)--- 进程优先级
进程优先级前台进程拥有一个正在与用户交互的activity(onResume调用)的进程拥有一个与正在和用户交互的activity绑定的服务的进程拥有一个正在“运行于前台”的服务——服务的startForeground方法调用拥有一个正在执行以下三个生命周期方法中任意一个的服务(onCreate(), onStart(), or onDestroy())拥有一个正在执行onRece原创 2016-02-24 19:43:27 · 437 阅读 · 0 评论 -
Androidx学习笔记(47)--- 借助xUtils实现下载
HttpUtils本身就支持多线程断点续传,使用起来非常的方便创建HttpUtils对象HttpUtils http = new HttpUtils();下载文件http.download(url, //下载请求的网址 target, //下载的数据保存路径和文件名 true, //是否开启断点续传 true原创 2016-02-03 22:19:02 · 359 阅读 · 0 评论 -
Androidx学习笔记(46)--- 用进度条显示下载进度
用进度条显示下载进度拿到下载文件总长度时,设置进度条的最大值//设置进度条的最大值pb.setMax(length);进度条需要显示三条线程的整体下载进度,所以三条线程每下载一次,就要把新下载的长度加入进度条定义一个int全局变量,记录三条线程的总下载长度int progress;刷新进度条while((len = is.r原创 2016-02-03 22:17:44 · 574 阅读 · 0 评论 -
Androidx学习笔记(39)--- 使用HttpClient框架做POST提交
发送post请求 //创建一个客户端对象 HttpClient client = new DefaultHttpClient(); //创建一个post请求对象 HttpPost hp = new HttpPost(path);往post对象里放入要提交给服务器的数据//要提交的数据以键值对的形式存在BasicNameValuePair对象中原创 2016-02-02 17:20:04 · 374 阅读 · 0 评论 -
Androidx学习笔记(40)--- 使用异步HttpClient(android-async-http-master)做get提交
发送get请求 //创建异步的httpclient对象 AsyncHttpClient ahc = new AsyncHttpClient(); //发送get请求 ahc.get(path, new MyHandler());注意AsyncHttpResponseHandler两个方法的调用时机class MyHandler extends原创 2016-02-02 17:22:16 · 547 阅读 · 0 评论 -
Androidx学习笔记(41)---使用异步HttpClient(android-async-http-master)做Post提交
发送post请求使用RequestParams对象封装要携带的数据//创建异步httpclient对象AsyncHttpClient ahc = new AsyncHttpClient();//创建RequestParams封装要携带的数据RequestParams rp = new RequestParams();rp.add("name", name);rp.ad原创 2016-02-02 17:23:44 · 698 阅读 · 0 评论 -
Androidx学习笔记(42)--- 多线程下载(java项目)
多线程下载原理:服务器CPU分配给每条线程的时间片相同,服务器带宽平均分配给每条线程,所以客户端开启的线程越多,就能抢占到更多的服务器资源确定每条线程下载多少数据发送http请求至下载地址String path = "http://192.168.1.102:8080/editplus.exe"; URL url = new URL(pat原创 2016-02-02 17:28:08 · 455 阅读 · 0 评论 -
Androidx学习笔记(43)--- 带断点续传的多线程下载(java项目)
带断点续传的多线程下载定义一个int变量记录每条线程下载的数据总长度,然后加上该线程的下载开始位置,得到的结果就是下次下载时,该线程的开始位置,把得到的结果存入缓存文件//用来记录当前线程总的下载长度int total = 0;while((len = is.read(b)) != -1){ raf.write(b, 0, len); total += le原创 2016-02-02 17:29:09 · 420 阅读 · 0 评论 -
Android签名
如果两个应用程序, 包名相同, 但是签名不同, 就无法覆盖安装正式签名1. 有效期比较长,一般大于25年2. 需要设置密码3. 正式发布应用时,必须用正式签名来打包测试签名(debug.keystore)1. 有效期是1年,很短2. 有默认的别名,密码, alias=android, 密码是androiddebugkey3. 在eclipse中直接运行原创 2016-03-03 15:28:15 · 566 阅读 · 0 评论 -
eclipse常用快捷键总结
ctrl + shift + o 导包ctrl + shift + t 快速查找某个类先按ctrl + 2 ,再点L, 创建变量并命名ctrl + o , 在当前类中,快速查找某个方法ctrl + k, 向下查找某个字符串ctrl + shift + k, 向上查找某个字符串alt + 左方向键 跳转上一个页面原创 2016-03-03 15:58:05 · 445 阅读 · 0 评论 -
Androidx学习笔记(44)--- 多线程断点续传(Android项目)
手机版的断点续传多线程下载器把刚才的代码直接粘贴过来就能用,记得在访问文件时的路径要改成Android的目录,添加访问网络和外部存储的路径测试代码/** * 注意:没有判断SD卡是否存在,剩余空间 */public class MainActivity extends ActionBarActivity { static int ThreadCount = 3; //原创 2016-02-03 22:07:52 · 368 阅读 · 0 评论 -
Androidx学习笔记(45)--- 获取文件的后缀名(java基本语法)
public static String getFileType(String fileUri){ File file = new File(fileUri); String fileName = file.getName(); //String fileType = fileName.substring(fileName.lastIndexO原创 2016-02-03 22:10:28 · 472 阅读 · 0 评论 -
Androidx学习笔记(60)--- 监听应用的安装、卸载、更新状态
监听应用的安装、卸载、更新原理:应用在安装卸载更新时,系统会发送广播,广播里会携带应用的包名 * 清单文件定义广播接收者接收的类型,因为要监听应用的三个动作,所以需要接收三种广播 "android.intent.action.PACKAGE_ADDED"/> "android.intent.action.原创 2016-02-14 06:19:27 · 940 阅读 · 0 评论 -
Androidx学习笔记(61)--- 广播的两种类型
广播的两种类型无序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,并且是没有先后顺序(同时收到)有序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,但是会按照广播接收者的优先级来决定接收的先后顺序优先级的定义:-1000~1000最终接收者:所有广播接收者都接收到广播之后,它才接收,并且一定会接收abortBroadCast:阻止其他接收者接收这条广原创 2016-02-16 08:04:24 · 838 阅读 · 0 评论 -
Androidx学习笔记(74)--- 对图片进行特效处理
对图片进行特效处理首先定义一个矩阵对象Matrix mt = new Matrix();缩放效果//x轴缩放1倍,y轴缩放0.5倍mt.setScale(1, 0.5f);旋转效果//以copyBm.getWidth() / 2, copyBm.getHeight() / 2点为轴点,顺时旋转30度mt.setRotate(30, cop原创 2016-02-24 20:06:11 · 512 阅读 · 0 评论 -
Androidx学习笔记(75)--- 画画板
画画板记录用户触摸事件的XY坐标,绘制直线 * 给ImageView设置触摸侦听,得到用户的触摸事件,并获知用户触摸ImageView的坐标 iv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent原创 2016-02-24 20:06:48 · 495 阅读 · 0 评论 -
Androidx学习笔记(76)--- 撕衣服
撕衣服原理:把穿内衣和穿外衣的照片重叠显示,内衣照在下面,用户滑动屏幕时,触摸的是外衣照,把手指经过的像素都置为透明,内衣照就显示出来了 iv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) {原创 2016-02-24 20:07:28 · 676 阅读 · 1 评论 -
Androidx学习笔记(77)--- 音乐播放器2
前面有一个简单的音乐播放器,能够简单的播放歌曲,这里实现稍微完善的播放器。音乐播放器播放服务播放音频的代码应该运行在服务中,定义一个播放服务MusicService服务里定义play、stop、pause、continuePlay等方法 private void play() { // TODO Auto-generated metho原创 2016-02-24 20:09:36 · 783 阅读 · 0 评论 -
Androidx学习笔记(78)--- 视频播放器(MediaPlayer+SurfaceView)
SurfaceView双缓冲技术该组件是重量级组件:占用资源比较多只要不可见,就不会创建,可见时,才会创建只要不可见,就会销毁FFMPEG开源免费的音视频编解码器Vitamio封装了FFMPEG的视频播放框架对外提供的api全部都是javaApiSurfaceView对画面的实时更新要求较高双缓冲技术:内存中有两个画布,A画布显示原创 2016-02-24 20:10:23 · 704 阅读 · 0 评论 -
Androidx学习笔记(79)--- 视频播放器二(VideoView等)
VideoViewVideoView是对MediaPlayer+SurfaceView的封装在布局中使用VideoView 在代码中如下: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { supe原创 2016-02-24 20:11:34 · 579 阅读 · 0 评论 -
Androidx学习笔记(80)--- 摄像拍照
摄像头启动系统提供的拍照程序//隐式启动系统提供的拍照ActivityIntent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//设置照片的保存路径File file = new File(Environment.getExternalStorageDirectory(), "haha.jpg"); int原创 2016-02-24 20:12:32 · 650 阅读 · 0 评论 -
Androidx学习笔记(82)--- 内容提供者(ContentProvider)-自定义内容提供者
创建数据库 public class MyOpenHelper extends SQLiteOpenHelper { public MyOpenHelper(Context context) { super(context, "people.db", null, 2); // TODO Auto-generated constructor stub } @Override pu原创 2016-02-24 20:13:56 · 653 阅读 · 0 评论 -
Androidx学习笔记(73)--- 在内存中创建图片的副本
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity原创 2016-02-24 20:03:42 · 481 阅读 · 0 评论 -
Androidx学习笔记(72)--- 加载大图片
多媒体编程文本、图片、音频、视频图片图片在计算机中的大小图片的总大小 = 图片的总像素 * 每个像素占用的大小单色位图:只能表示2种颜色使用两个数字:0和1使用一个长度为1的二进制数字就可以表示了每个像素占用1/8个字节16色位图:能表示16种颜色需要16个数字:0-15,0000 - 1111使用一个长度为4的二进制数组就可以表示了每个像素占用1/2个字节原创 2016-02-24 19:56:16 · 415 阅读 · 0 评论 -
Androidx学习笔记(11)-- 文件读写操作-在内部存储空间中读写文件
在内部存储空间中读写文件(不需要)小案例:用户输入账号密码,勾选“记住账号密码”,点击登录按钮,登录的同时持久化保存账号和密码1. 定义布局 2. 完成按钮的点击事件弹土司提示用户登录成功Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();3. 拿到用户输入的数据原创 2016-01-20 19:24:19 · 1008 阅读 · 0 评论 -
Androidx学习笔记(23)-- 创建ListView展示数据库的数据
ListView就是用来显示一行一行的条目的MVC结构M:model模型层,要显示的数据 ————people集合V:view视图层,用户看到的界面 ————ListViewc:control控制层,操作数据如何显示 ————adapter对象 ListView的每一个条目都是一个View对象BaseAdapter必须实现的两个方法第一个原创 2016-01-26 09:19:39 · 644 阅读 · 0 评论 -
Androidx学习笔记(59)--- 简易勒索软件原理
勒索软件接收开机广播,在广播接收者中启动勒索的Activity清单文件中配置接收开机广播 权限定义广播接收者@Overridepublic void onReceive(Context context, Intent intent) { //开机的时候就启动勒索软件 Intent it原创 2016-02-14 06:17:44 · 801 阅读 · 0 评论 -
Androidx学习笔记(18)-- junit单元测试
测试黑盒测试测试逻辑业务白盒测试测试逻辑方法根据测试粒度方法测试:function test单元测试:unit test集成测试:integration test系统测试:system test根据测试暴力程度冒烟测试:smoke test压力测试:pressure test单元测试junit原创 2016-01-24 18:28:41 · 883 阅读 · 0 评论 -
Androidx学习笔记(12)-- 文件读写操作-在外部存储空间中读写文件
在外部存储读写数据sd卡的路径SD卡:相当于电脑的移动硬盘2.2之前,sd卡路径:sdcard4.3之前,sd卡路径:mnt/sdcard4.3开始,sd卡路径:storage/sdcard所有存储设备,都会被划分成若干个区块,每个区块有固定的大小存储设备的总大小 = 区块大小 * 区块数量最简单的打开sd卡的方式原创 2016-01-20 19:26:24 · 481 阅读 · 0 评论 -
Androidx学习笔记(49)--- Activity的跳转
Activity的跳转Activity的跳转需要创建Intent对象,通过设置intent对象的参数指定要跳转Activity通过设置Activity的包名和类名实现跳转,称为显式意图通过指定动作实现跳转,称为隐式意图显式意图跳转至同一项目下的另一个Activity,直接指定该Activity的字节码即可Intent intent = new原创 2016-02-03 22:24:35 · 770 阅读 · 0 评论 -
Androidx学习笔记(17)-- 数据存储之XML
使用XML文件备份短信短信一般需要获取四组数据:号码,内容,时间,类型(发送还是接收)创建几个虚拟的短信对象,存在list中备份数据通常都是备份至sd卡(需要权限)使用StringBuffer拼接字符串把整个xml文件所有节点append到sb对象里sb.append("");//添加smss的开始节点sb.append("");.......原创 2016-01-22 18:17:26 · 432 阅读 · 0 评论