Android Activity/Service/Broadcaster三大组件之间互相调用
摘要:我们研究两个问题,1、Service如何通过Broadcaster更改activity的一个TextView。(研究这个问题,考虑到Service从服务器端获得消息之后,将msg返回给activity)2、Activity如何通过Binder调用Service的一个方法。(研究这个问题,考虑到与服务器端交互的动作,打包至Service,Activity只呈现界面,调用Service的方法) 结构图见如下:效果图如下:点击“start service”按钮,启动Service,然后更改Activity的UI。点击“send msg to server”按钮调用Service的方法,显示Notif
阅读全文
posted @
2013-06-21 10:42
Ruthless
阅读(9513)
推荐(1) 编辑
Service实时向Activity传递数据案例
摘要:演示一个案例,需求如下:在Service组件中创建一个线程,该线程用来生产数值,每隔1秒数值自动加1,然后把更新后的数值在界面上实时显示。步骤如下:1、新建一个android项目工程,取名为demo。2、新建一个Service类,用来实时生产数值,供界面实时显示。package com.ljq.activity;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.util.Log;public class CountService extends Se
阅读全文
posted @
2013-06-21 10:32
Ruthless
阅读(30728)
推荐(2) 编辑
Android Service获取当前位置(GPS+基站)
摘要:需求详情:1)、Service中每隔1秒执行一次定位操作(GPS+基站)2)、定位的结果实时显示在界面上(要求得到经度、纬度)技术支持:1)、获取经纬度通过GPS+基站获取经纬度,先通过GPS来获取,如果为空改用基站进行获取–>GPS+基站(基站获取支持联通、电信、移动)。2)、实时获取经纬度为了达到实时获取经纬度,需在后台启动获取经纬度的Service,然后把经纬度数据通过广播发送出去,在需要的地方进行广播注册(比如在Activity中注册广播,显示在界面中)–>涉及到Service+BroadcastReceiver+Activity+Thread等知识点。备注:本文注重实践,
阅读全文
posted @
2013-06-21 10:21
Ruthless
阅读(33385)
推荐(1) 编辑
四十七、实现调用Android手机的拍照功能
摘要:一、main.xml布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
阅读全文
posted @
2011-12-28 16:17
Ruthless
阅读(24926)
推荐(3) 编辑
四十六、android中的Bitmap
摘要:在Android SDK中可以支持的图片格式如下:png , jpg , gif和bmp。1.Bitmap的创建借助于BitmapFactory。1)资源中的图片使用BitmapFactory获取位图Bitmap bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.testImg); 或者是Resources res=getResources();//使用BitmapDrawable获取位图//使用BitmapDrawable (InputStream is)构造一个BitmapDrawable;//使用Bitm
阅读全文
posted @
2011-12-28 16:06
Ruthless
阅读(6222)
推荐(2) 编辑
四十五、android camera
摘要:1.关于预览横竖差90度的问题 原因分析 经过查证和实验,可以证实:Android提供的SDK(android.hardware.Camera)里大概不能正常的使用竖屏(portrait layout)加载照相机,当用竖屏模式加载照相机时会产生以下情况:1. 照相机成像左倾90度(倾斜);2. 照相机成像长宽比例不对(失比)。之所以是“大概”,原因是因为可能可以通过一些比较复杂的手段解决。如果以上成立,那为什么竖屏不能正常成像也就很显然了。为什么会产生这样的情况,请看下面的研究分析。 照相机在一般情况下是必须用landscape layout(横屏)的,可以证明,先写一个照相机(只要能pre.
阅读全文
posted @
2011-12-27 17:40
Ruthless
阅读(2545)
推荐(1) 编辑
四十四、Android之android:layout_weight详解
摘要:1、LinearLayout可以为其包含控件指定填充权值layout_weight。 这样就允许其包含的控件可以填充屏幕上的剩余空间。这也避免了所有控件挤成一堆的情况,而是允许他们放大填充所有空白。剩余的空间会按这些控件指定的权值比例分配屏幕。 2、默认情况下,weight的值是0,表示按照控件的实际大小显示;如果weight设置高于零。 3、剩余空间会按照该控件的weight值占所有控件weight的比例分配给该控件。 比如有两个控件,一个weight为1,另外一个是2. 则剩余空间会把1/(1+2)的部分给控件一,另外2/(1+2)的分配给控件二。也就是权值越大,重要度越大。 4、如果Li
阅读全文
posted @
2011-12-27 14:25
Ruthless
阅读(3606)
推荐(1) 编辑
四十三、设置Activity永不过期,即不执行onDestroy()
摘要:/** * 重写finish()方法 */ @Override public void finish() { //super.finish(); //记住不要执行此句 moveTaskToBack(true); //设置该activity永不过期,即不执行onDestroy() } 注意:不要调用super.finish(),只需调用moveTaskToBack(true)就可以,这样只有在第一次启动的时候会执行onCreate()。以后(只要进程不死掉)都不会执行onCreate()
阅读全文
posted @
2011-12-15 18:08
Ruthless
阅读(5401)
推荐(2) 编辑
四十二、Android完全退出应用程序
摘要:在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,这是因为调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())只能杀死当前的activity,并不能杀死所有的activity,为了完美达到此效果,接下来通过一个案例实现:一、使用单
阅读全文
posted @
2011-12-15 16:15
Ruthless
阅读(6195)
推荐(4) 编辑
四十一、Android Notification通知详解
摘要:根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时,把notification从通知栏里去掉。或者,只要程序在运行就一直显示通知栏图标。下面对Notification类中的一些常量,字段,方法简单介绍一下:常量:DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等DEFAULT_LIGHTS 使用默认闪光提示DEFAULT_SOUNDS 使用默认提示声音DEFAULT_VIBRATE 使用默认手机震动 【说明】:加入手机震动,一定要在
阅读全文
posted @
2011-12-14 21:09
Ruthless
阅读(7222)
推荐(2) 编辑
四十、Android home键和back键区别
摘要:back键Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了.如果说程序中存在service之类的,则可以在恰当的位置监听处理下也就可以了. home键Android程序的隐藏,当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手
阅读全文
posted @
2011-12-14 19:03
Ruthless
阅读(15533)
推荐(1) 编辑
三十九、Android原理 不需要关闭后台运行程序
摘要:不用在意剩余内存的大小,其实很多人都是把使用其他系统的习惯带过来来了。android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java,就能更清楚这机制了。其实和java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊。但事实上他并不影响速度。相反加快了下次启动应用的速度。这本来就是android标榜的优势之一,如果人为去关闭进程,没有太大必要。特别是使用自动关进程的软件。 到这里有人会说了,那为什么内存少的时候运行大..
阅读全文
posted @
2011-12-14 15:13
Ruthless
阅读(2504)
推荐(2) 编辑
三十八、判断服务是否运行及定位问题
摘要:/** * 判断服务是否正在运行 * * @param context * @param className 判断的服务名字:包名+类名 * @return true在运行 false 不在运行 */ public static boolean isServiceRunning(Context context, String className) { boolean isRunning = false; ActivityManager activityManager = (Activit...
阅读全文
posted @
2011-12-01 17:22
Ruthless
阅读(1219)
推荐(1) 编辑
三十七、android sqlite3详解
摘要:SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个使用sqlite3命令的简要说明。 启动sqlite3程序,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲入SQL语句(以分号“;”结束),敲回车键之后,SQL语句就会执行。例如,创建一张"tb11"表,你可以这样做:C:\Users\Administrator>adb shell# sqlite3SQLite
阅读全文
posted @
2011-11-28 19:16
Ruthless
阅读(9314)
推荐(4) 编辑
三十六、Android中使用adb访问SQLite的方法
摘要:先前条件:在操作adb shell之前,记得先启动模拟器,因为只有模拟器已启动成功才能使用adb shell 1)、打开命令提示符,输入:adb,按回车,如果得到下面一大堆命令说明(如图 1),表示adb的配置是成功的,如果提示“不是内部或外部命令,也不是可运行的程序或批处理文件”,那么需要将AndroidSDK中adb.exe文件的目录添加到系统的环境变量中。 2)、输入adb shell,进入Linux命令环境3)、sqlite3 ->访问sqlite数据。到此为止我们就可以在linux环境下操作sqlitle。
阅读全文
posted @
2011-11-27 00:19
Ruthless
阅读(2245)
推荐(1) 编辑
三十五、android adb命令详解
摘要:cmd常用控制台1、清屏命令:cls2、列出当前目录详细信息:dir3、删除文件:del xxx.txtandroid adb常用命令1)、创建sdcardmksdcard 50M D:/sdcard.img --> 创建一张容量为50M的SDCard2)、删除sdcardcd d:/del sdcard.img3)、把ljq.txt文件放在sdcardadb push d:/ljq.txt /sdcard/4)、创建avd模拟器android create avd -n avd名称 -t target平台编号eg、android create avd -n android2.1 -t
阅读全文
posted @
2011-11-25 19:10
Ruthless
阅读(3391)
推荐(2) 编辑
三十四、Android Spinner控件之键值对用法
摘要:一、字典表,用来存放键值对信息package com.ljq.activity;import java.io.Serializable;@SuppressWarnings("serial")public class Dict implements Serializable { private Integer id; private String text; public Dict() { } public Dict(Integer id, String text) { super(); this.id = id; this...
阅读全文
posted @
2011-11-14 10:43
Ruthless
阅读(10654)
推荐(2) 编辑
三十三、Android给ListView设置分割线Divider样式
摘要:给ListView设置分割线,只需设置如下两个属性:android:divider="#000" //设置分割线显示颜色android:dividerHeight="1px" //此处非0,否则无效 <ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:divider="#FFF" androi
阅读全文
posted @
2011-11-12 12:05
Ruthless
阅读(58043)
推荐(1) 编辑
三十二、Android上传文件至服务器
摘要:本实例实现每隔5秒上传一次,通过服务器端获取手机上传过来的文件信息并做相应处理;采用Android+Struts2技术。一、Android端实现文件上传1)、新建一个Android项目命名为androidUpload,目录结构如下:2)、新建FormFile类,用来封装文件信息package com.ljq.utils;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;/** * 上传文件 */public clas
阅读全文
posted @
2011-11-09 15:18
Ruthless
阅读(71412)
推荐(12) 编辑
三十一、关于android camera setParameters出错
摘要:开发Android 拍照功能时,在给Camera.Parameters对象设置setPreviewSize()、setPictureSize()属性,使用HTC真机测试时,发生如下异常:ERROR/QualcommCameraHardware(1377): Invalid picture size requested、java.lang.RuntimeException: setParameters failed,使用三星测试是可行的。 解决办法:考虑到兼容性问题,最好的办法就是不设置这两个属性。
阅读全文
posted @
2011-11-07 22:27
Ruthless
阅读(2526)
推荐(1) 编辑