- 浏览: 203872 次
- 性别:
- 来自: 湖南
文章分类
最新评论
lost in android
Linux 环境搭建
java sdk的安装 jdk-6u21-linux-i586.bin
android sdk的安装 android-sdk-linux_x86
环境变量的配制
eclips的安装和配制 eclipse-java-helios-SR1-linux
eclipse IDE for java Developers 3.5.2
安装jdk
chmod 777 jdk-6u21-linux-i586.bin #(修改权限可执行)
./jdk-6u21-linux-i586.bin #(安装jdk)
android sdk的安装 android-sdk-linux_x86
环境变量的配制
cd /etc
ls -l | grep profile #(查看管理员账号)
sudo vim profile #(修改写入系统变量)
export JAVA_HOME=/home/mars/downlods/jdk1.6.0_21
export PATH=$PATH:$JAVA_HOME/bin:/home/mars/tools/android-sdk-liunx_x86/tools
测试环境变量
javac java -version which java
adb which adb
android
android 四大天王之
activity 应用界面
intent 传输数据
service 提供服务支持
Content Provider 负责存储数据
android 安装配制
下载sdk http://developer.android.com/index.html
下载ADT eclips 插件 http://developer.android.com/sdk/eclipse-adt.html
创建Activity的要点
1、创建activity就是一个类,并且这个类要继承Activity
2、需要复写onCreate方法
3、每一个Activity都需要在AndroidManifest.xml文件当中进行配制
4、为Activity添加必要的控件
android:orientation="vertical"
它确定了LinearLayout的方向,其值可以为
*vertical, 表示垂直布局
*horizontal, 表示水平布局
android:layout_width="fill_parent"
android:layout_height="fill_parent"
分别指明了在父控件中当前控件的宽和高,可以设定其确定的值,但一般使用下面两个值
*fill_parent,填满父控件的空白
*wrap_content,表示大小刚好足够显示当前控件里的内容
android:gravity="center_horizontal"
如果是没有子控件的view设置此属性,表示内容的对齐方式;如果是有子控件的view设置此属性,则表示子控件的对齐方式(重力倾向),其值如下(需要多个时,用“|”分开)
*top
*bottom
*left
*right
*center_vertical
*center_horizontal
*center
*fill_vertical
*fill_horizontal
*fill
实例:基本布局如下:
多个Activity之间的关系(startActivity(Intentintent))
Intent的基本作用
一个Intent对象包含了一组信息
1、Component name
2、Action
3、Data
4、Category
5、Extras
6、Flags
使用Intent发送消息
......
Uri uri = Uri.parse("smsto://08000001")
Intent intent = new Intent(Intent.ACTION_SENDTO,uri);
intent.putExtra("sms_body","the sms text");
startActivity(intent);
......
实例:通过Intent进入不同Activity
常用控制使用方法
TextView、EditText、Button、Menu的使用方法
Activity的生命周期(生命周期如下)
启动第一个Activity
FirstAction onCreate onStart onResume
从第一个Activity启动第二个Activity
FirstAction onPause
SecondAction onCreate onStart onResume
FirstAction onStop
返回
SecondAction onPause
FirstAction onRestart onStart onResume
SecondAction onStop onDestroy
Task运行的过程
android每启动activity都会将activity存入Task当中,android将Task(栈)中将显示最后一个action
常用控件使用:
RadioGroup、RadioButton、CheckBox、Toast
ProgressBar、ListView
Handler的使用
使用消息队列,达到异步后台处理
1、Handler与线程是处于同一个线程当中,他直接调用run方法,而不是调用start,并没有启用新线程。
实例1:
2、Bundle 是一种特殊map容器
实例2:
SQLite使用方法(内置文本型关系型数据库)
1、SQLite介绍
官网:http://www.sqlite.org/
2.SQLiteOpenHelper使用方法
adb shell(可以使用liunx命令)
DDMS程序调试
通过Log.d("debug","this is error!");
文件下载步骤
创建一个HttpURLVonnection对象
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
获得一个InputStream对象
urlConn.getInputStream()
访问网络的权限
android.permission.INTERNET
访问SDCARD
得到当前设备SD卡的目录
Environment.getExternalStorageDirectory()
访问SD卡的权限:
android.permission.WRITE_EXTERNAL_STORAGE
Content Provider组件(数据接口、数据共享)
Content Provider基本概念
1、Content Provider提供为存储和获取数据提供了统一的接口
2、使用ContentProvider可以在不同的应用程序间共享数据
3、Android为常见的一些数据提供了ContentPrivider(包括音频,视频,图片和通讯录等等)
ContentProvider使用表的形式来组织数据(_ID NUMBER NUMBER_KEY LABEL NAME TYPE)
URL
1、每一个ContentProvicer都拥有一个公共的URL,这个URL用于表示这个ContentProvicer所提供的数据。
2、Android所提供的ContentProvicer都存放在android.provicer包当中。
ContentProvider所提供的函数
1、query() : 查询
2、insert() : 插入
3、update() : 更新
4、delete() : 删除
5、getType() : 得到数据类型
6、onCreate() : 创建时的回调函数
实现ContentProvicer的过程
1、定义一个CONTENT_URL常量
2、定义一个类,继承ContetProvicer
3、实现query,insert,update,delete,getType和onCreate方法
4、在AndoidManifest.xml当中进行声明
xml文件解析
sax,全称Simple ApI for XML,既是一种接口,也是一个软件包。
作为接口,sax是事件驱动型xml解析的一个标准接口。
sax的原理
sax的工作原理简单地说是对文档进行顺序扫描,当事件到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。
大多数sax实现都会产生以下类型的事件:
在文档的开始和结束时触发文档处理事件。
在文档内每一xml元素接受解析的前后触发元素事件。
任何元数据通常都由单独的事件交付。
在处理文档的DTD或Schema时产生DTD或Schema事件。
产生错误事件用来通知主机应用程序解析错误。
sax的常用接口介绍
ContentHandler是java类包中的一个特殊的sax接口,位于org.xml.sax包中。该接口封装了一些对事件处理的方法,当xml解析器开始解析xml输入文档时,它会遇到某些特殊的事件,比如文档的开头和结束、元素开头和结束、以及元素中的相应的方法来响应该事件。
ContentHandler接口的方法有以下几种:
void startDocument()
void endDocument()
void startElement(string uri,String localName,String qName,Attributes atts)
void endElement(String uri,String LocalName,String qName)
void characters(char[] ch,int start,int length)
广播机制
注册BroadcastReceiver的方法
broadcastReceiver用户监听被广播的事件(intent)为了达到这个目的,BroadcastReceiver必须进行注册,注册的方法有以下两种:
1、在应用程序的代码当中进行注册
注册BroadcastReceiver:
registerReceiver(receiver,filter);
取消注册BroadcastReceiver:
如果一个BroadcastReceiver用于更新UI,那么通常会使用这种方法进行注册,在Activity启动的时候注册BroadcastReceiver,在Activity不可见以后取消注册。
2、在androidManifest.xml当中进行注册
<receiver android:name=".BrodCastReceiver">
<intent-filter>
<action android:name="android.intent.action.EDIT"/>
</intent-filter>
</receiver>
使用这样的方式注册的BrodcastReceiver,即使应用程序没有启动,或者被kill掉以后,也始终处于活动状态状态
Android内置的Broadcast Actions
在Android平台当中,内置了很多Action,用于帮助开发者监听手机上所发生各种事件,一下是一些比较常见的Action,完事的Action列表可以参考:
Action名称 触发场景
ACTION_CAMERA_BUTTON Broadcast Action:The "Camera Button" was pressed.
ACTION_BATTERY_LOW Broadcast Action:Indicates low battery condition on the device.
ACTION_DATE_CHANGED Broadcast Action:The date has changed.
ACTION_POWER_CONNECT Broadcast Action:External power has bean connected to the device.
ACTION_REBOOT Broadcast Action:Have the device reboot.
ACTION_SCREEN_ON Broadcast Action:Sent after the screen turns on.
WIFI 网络操作
1、什么是WIFI
WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在则是通过无线电波来连网;常见的就是无线路由器,那么在这个无线路由器的电波覆盖的有效范围都可以采用WIFI连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为“热点”。
2、WIFI网卡的状态
WIFI网卡的状态是由一系列的整形常量来表示的:
1、WIFI_STATE_DISABLED: WIFI网卡不可用
2、WIFI_STATE_DISABLING: WIFI正在关闭
3、WIFI_STATE_ENABLED: WIFI网卡可用
4、WIFI_STATE_ENABLING: WIFI网卡正在打开
5、WIFI_STATE_UNKNOWN: 未知网卡状态
操作WIFI网卡所需的权限
关于操作权限,可以在帮助文档当中找到完整的列表,在这里列出和网络相关的部分权限:
权限名称 描述
CHANGE_NETWORK_STATE Allows applications to change network connectivity state
CHANGE_WIFI_STATE Allows applications to change Wi-Fi connectivity state
ACCESS_NETWORK_STATE Allows applications to access information about networks
ACCESS_WIFI_STATE Allows applications to access information about Wi-Fi networks
3、改变WIFI网卡的状态
对WIFI网卡进行操作需要通过WIFIManager对象牙塔来进行获取该对象的方法如下:
WifiManager wifiManager = (WifiManager) ContextActivity.this.getSystemService(Context.WIFI_SERVICE);
打开WIFI网卡
wifiManager.setWifiEnabled(true);
关闭WIFI网卡
wifiManager.setWifiEnabled(false);
获取网卡当前的状态
wifiManager.getWifiState();
Socket编程
Socket的英文原意是“插座”
所谓socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过“套接安”向网络发出请求或者应答网络请求。
Service编程
Service是什么
Service是一个应用程序组件
Service没有图形化界面
Service通常用来处理一些耗时比较长的操作
可以使用Service更新ContentProvider,发送Intent以及启动系统的通知等待
Service不是什么
Service不是一个单独的进程。
Service不是一个线程
项目功能分析
MP3播放器主要功能
1、播放MP3文件
2、在播放MP3文件的同时显示歌词
3、从服务器下载歌词列表
4、从服务器下载MP3和LRC文件
代码编写
1、下载服务器端的XML文件
2、解析XML文件
3、完成文件列表更新
卸载程序 adb uninstall XXX
Linux 环境搭建
java sdk的安装 jdk-6u21-linux-i586.bin
android sdk的安装 android-sdk-linux_x86
环境变量的配制
eclips的安装和配制 eclipse-java-helios-SR1-linux
eclipse IDE for java Developers 3.5.2
安装jdk
chmod 777 jdk-6u21-linux-i586.bin #(修改权限可执行)
./jdk-6u21-linux-i586.bin #(安装jdk)
android sdk的安装 android-sdk-linux_x86
环境变量的配制
cd /etc
ls -l | grep profile #(查看管理员账号)
sudo vim profile #(修改写入系统变量)
export JAVA_HOME=/home/mars/downlods/jdk1.6.0_21
export PATH=$PATH:$JAVA_HOME/bin:/home/mars/tools/android-sdk-liunx_x86/tools
测试环境变量
javac java -version which java
adb which adb
android
android 四大天王之
activity 应用界面
intent 传输数据
service 提供服务支持
Content Provider 负责存储数据
android 安装配制
下载sdk http://developer.android.com/index.html
下载ADT eclips 插件 http://developer.android.com/sdk/eclipse-adt.html
创建Activity的要点
1、创建activity就是一个类,并且这个类要继承Activity
2、需要复写onCreate方法
3、每一个Activity都需要在AndroidManifest.xml文件当中进行配制
4、为Activity添加必要的控件
android:orientation="vertical"
它确定了LinearLayout的方向,其值可以为
*vertical, 表示垂直布局
*horizontal, 表示水平布局
android:layout_width="fill_parent"
android:layout_height="fill_parent"
分别指明了在父控件中当前控件的宽和高,可以设定其确定的值,但一般使用下面两个值
*fill_parent,填满父控件的空白
*wrap_content,表示大小刚好足够显示当前控件里的内容
android:gravity="center_horizontal"
如果是没有子控件的view设置此属性,表示内容的对齐方式;如果是有子控件的view设置此属性,则表示子控件的对齐方式(重力倾向),其值如下(需要多个时,用“|”分开)
*top
*bottom
*left
*right
*center_vertical
*center_horizontal
*center
*fill_vertical
*fill_horizontal
*fill
实例:基本布局如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">星座运势</string> <string name="app_title">女巫店每周星座运势</string> <string name="app_xinzhan">猴子座\nlen\n23/7-22/8\n20100609-20100616</string> <string name="app_info">狮子座身心坦荡的一周。全力以赴,问心无愧。狮子座们本月主运落在各种组合与关系的重建与稳定,对于单身的狮子座们来说,则是拥有稳定情感,相互告白的一周。事业学业财富平稳的基础上,思考人生未来的方向与爱人的互动变成重点,越来越清楚自己想要的是什么,越来越知道生活的方向在哪里,可能会经历痛苦的调整期,但相信吧,你的未来确实是越来越好的。财务身体都稳定。\n 爱情是心的方向。\n幸运色:鹅黄色\n提防星座:白羊\n幸运星座:水瓶\n\n来源地址:http://nownow.blogbus.com/logs/65538590.html</string> </resources>
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="0,2" android:background="@android:color/black" > <TableRow> <ImageView android:background="@android:color/black" android:src="@drawable/left" android:layout_column="0" android:scaleType="center" android:layout_width="48px" android:layout_height="58px" android:padding="5dip" /> <TextView android:id="@+id/XinZhan" android:layout_column="1" android:layout_width="120px" android:layout_height="63px" android:gravity="center_vertical" android:padding="5dip"/> <ImageView android:background="@android:color/black" android:layout_column="2" android:src="@drawable/right" android:scaleType="center" android:layout_width="48px" android:layout_height="58px" android:padding="5dip" /> </TableRow> <TableRow> <TextView android:id="@+id/info" android:layout_column="0" android:layout_width="fill_parent" android:layout_height="250px" android:layout_span="3" android:padding="10dip"/> </TableRow> <ImageView android:background="@android:color/black" android:src="@drawable/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="0dp" > </ImageView> </TableLayout>
package mars.activity; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class Activity01 extends Activity { private TextView XinZhan; private TextView Info; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.app_title); setContentView(R.layout.main); XinZhan = (TextView) this.findViewById(R.id.XinZhan); Info = (TextView) this.findViewById(R.id.info); XinZhan.setText(R.string.app_xinzhan); Info.setText(R.string.app_info); } }
多个Activity之间的关系(startActivity(Intentintent))
Intent的基本作用
一个Intent对象包含了一组信息
1、Component name
2、Action
3、Data
4、Category
5、Extras
6、Flags
使用Intent发送消息
......
Uri uri = Uri.parse("smsto://08000001")
Intent intent = new Intent(Intent.ACTION_SENDTO,uri);
intent.putExtra("sms_body","the sms text");
startActivity(intent);
......
实例:通过Intent进入不同Activity
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.com" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Activity02" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="OtherActivity" android:label="@string/app_name2"></activity> </application> </manifest>
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Intent实例</string> <string name="app_button">进入</string> <string name="app_button1">返回</string> <string name="app_name1">Activity02</string> <string name="app_name2">OtherActivity</string> </resources>
<?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" > <Button android:id="@+id/mybutton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/app_button"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/mybutton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/app_button1"/> </LinearLayout>
package cn.com; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Activity02 extends Activity { private Button mybutton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.app_name1); setContentView(R.layout.main); mybutton = (Button) this.findViewById(R.id.mybutton); mybutton.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("testIntent","this is Test Intent"); intent.setClass(Activity02.this, OtherActivity.class); Activity02.this.startActivity(intent); }}); } }
package cn.com; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class OtherActivity extends Activity { private Button mybutton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.app_name2); setContentView(R.layout.other); Intent intent = this.getIntent(); String value = intent.getStringExtra("testIntent"); Toast.makeText(OtherActivity.this, value, Toast.LENGTH_LONG).show(); mybutton = (Button) this.findViewById(R.id.mybutton); mybutton.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent = new Intent(); intent.setClass(OtherActivity.this, Activity02.class); OtherActivity.this.startActivity(intent); }}); } }
常用控制使用方法
TextView、EditText、Button、Menu的使用方法
Activity的生命周期(生命周期如下)
启动第一个Activity
FirstAction onCreate onStart onResume
从第一个Activity启动第二个Activity
FirstAction onPause
SecondAction onCreate onStart onResume
FirstAction onStop
返回
SecondAction onPause
FirstAction onRestart onStart onResume
SecondAction onStop onDestroy
Task运行的过程
android每启动activity都会将activity存入Task当中,android将Task(栈)中将显示最后一个action
常用控件使用:
RadioGroup、RadioButton、CheckBox、Toast
ProgressBar、ListView
Handler的使用
使用消息队列,达到异步后台处理
1、Handler与线程是处于同一个线程当中,他直接调用run方法,而不是调用start,并没有启用新线程。
实例1:
package cn.com; import android.app.Activity; import android.os.Bundle; import android.os.Handler; public class HandlerThread extends Activity { private Handler handler = new Handler(); private Runnable r = new Runnable(){ public void run() { System.out.println("handler---->"+Thread.currentThread().getId()); System.out.println("handlername---->"+Thread.currentThread().getName()); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); handler.post(r); // Thread th = new Thread(r); // th.start(); System.out.println("activte---->"+Thread.currentThread().getId()); System.out.println("activtename---->"+Thread.currentThread().getName()); } }
2、Bundle 是一种特殊map容器
实例2:
package cn.com; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; public class HanderLoop extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.out.println("Activity-->"+Thread.currentThread().getId()); HandlerThread handlerThread = new HandlerThread("handler_thread"); handlerThread.start(); MyHandler myHandler = new MyHandler(handlerThread.getLooper()); Message msg = myHandler.obtainMessage(); msg.obj = "abc"; Bundle b = new Bundle(); b.putInt("age", 20); b.putString("name", "Jim"); msg.setData(b); msg.sendToTarget(); } class MyHandler extends Handler{ public MyHandler(){ } public MyHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { String s = (String) msg.obj; Bundle b = msg.getData(); int age = b.getInt("age"); String name = b.getString("name"); System.out.println("obj-->"+s); System.out.println("age is "+age+" name is "+name); System.out.println("Handler-->"+Thread.currentThread().getId()); System.out.println("handerMessage"); } } }
SQLite使用方法(内置文本型关系型数据库)
1、SQLite介绍
官网:http://www.sqlite.org/
2.SQLiteOpenHelper使用方法
adb shell(可以使用liunx命令)
DDMS程序调试
通过Log.d("debug","this is error!");
文件下载步骤
创建一个HttpURLVonnection对象
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
获得一个InputStream对象
urlConn.getInputStream()
访问网络的权限
android.permission.INTERNET
访问SDCARD
得到当前设备SD卡的目录
Environment.getExternalStorageDirectory()
访问SD卡的权限:
android.permission.WRITE_EXTERNAL_STORAGE
Content Provider组件(数据接口、数据共享)
Content Provider基本概念
1、Content Provider提供为存储和获取数据提供了统一的接口
2、使用ContentProvider可以在不同的应用程序间共享数据
3、Android为常见的一些数据提供了ContentPrivider(包括音频,视频,图片和通讯录等等)
ContentProvider使用表的形式来组织数据(_ID NUMBER NUMBER_KEY LABEL NAME TYPE)
URL
1、每一个ContentProvicer都拥有一个公共的URL,这个URL用于表示这个ContentProvicer所提供的数据。
2、Android所提供的ContentProvicer都存放在android.provicer包当中。
ContentProvider所提供的函数
1、query() : 查询
2、insert() : 插入
3、update() : 更新
4、delete() : 删除
5、getType() : 得到数据类型
6、onCreate() : 创建时的回调函数
实现ContentProvicer的过程
1、定义一个CONTENT_URL常量
2、定义一个类,继承ContetProvicer
3、实现query,insert,update,delete,getType和onCreate方法
4、在AndoidManifest.xml当中进行声明
xml文件解析
sax,全称Simple ApI for XML,既是一种接口,也是一个软件包。
作为接口,sax是事件驱动型xml解析的一个标准接口。
sax的原理
sax的工作原理简单地说是对文档进行顺序扫描,当事件到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。
大多数sax实现都会产生以下类型的事件:
在文档的开始和结束时触发文档处理事件。
在文档内每一xml元素接受解析的前后触发元素事件。
任何元数据通常都由单独的事件交付。
在处理文档的DTD或Schema时产生DTD或Schema事件。
产生错误事件用来通知主机应用程序解析错误。
sax的常用接口介绍
ContentHandler是java类包中的一个特殊的sax接口,位于org.xml.sax包中。该接口封装了一些对事件处理的方法,当xml解析器开始解析xml输入文档时,它会遇到某些特殊的事件,比如文档的开头和结束、元素开头和结束、以及元素中的相应的方法来响应该事件。
ContentHandler接口的方法有以下几种:
void startDocument()
void endDocument()
void startElement(string uri,String localName,String qName,Attributes atts)
void endElement(String uri,String LocalName,String qName)
void characters(char[] ch,int start,int length)
广播机制
注册BroadcastReceiver的方法
broadcastReceiver用户监听被广播的事件(intent)为了达到这个目的,BroadcastReceiver必须进行注册,注册的方法有以下两种:
1、在应用程序的代码当中进行注册
注册BroadcastReceiver:
registerReceiver(receiver,filter);
取消注册BroadcastReceiver:
如果一个BroadcastReceiver用于更新UI,那么通常会使用这种方法进行注册,在Activity启动的时候注册BroadcastReceiver,在Activity不可见以后取消注册。
2、在androidManifest.xml当中进行注册
<receiver android:name=".BrodCastReceiver">
<intent-filter>
<action android:name="android.intent.action.EDIT"/>
</intent-filter>
</receiver>
使用这样的方式注册的BrodcastReceiver,即使应用程序没有启动,或者被kill掉以后,也始终处于活动状态状态
Android内置的Broadcast Actions
在Android平台当中,内置了很多Action,用于帮助开发者监听手机上所发生各种事件,一下是一些比较常见的Action,完事的Action列表可以参考:
Action名称 触发场景
ACTION_CAMERA_BUTTON Broadcast Action:The "Camera Button" was pressed.
ACTION_BATTERY_LOW Broadcast Action:Indicates low battery condition on the device.
ACTION_DATE_CHANGED Broadcast Action:The date has changed.
ACTION_POWER_CONNECT Broadcast Action:External power has bean connected to the device.
ACTION_REBOOT Broadcast Action:Have the device reboot.
ACTION_SCREEN_ON Broadcast Action:Sent after the screen turns on.
WIFI 网络操作
1、什么是WIFI
WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在则是通过无线电波来连网;常见的就是无线路由器,那么在这个无线路由器的电波覆盖的有效范围都可以采用WIFI连接方式进行联网,如果无线路由器连接了一条ADSL线路或者别的上网线路,则又被称为“热点”。
2、WIFI网卡的状态
WIFI网卡的状态是由一系列的整形常量来表示的:
1、WIFI_STATE_DISABLED: WIFI网卡不可用
2、WIFI_STATE_DISABLING: WIFI正在关闭
3、WIFI_STATE_ENABLED: WIFI网卡可用
4、WIFI_STATE_ENABLING: WIFI网卡正在打开
5、WIFI_STATE_UNKNOWN: 未知网卡状态
操作WIFI网卡所需的权限
关于操作权限,可以在帮助文档当中找到完整的列表,在这里列出和网络相关的部分权限:
权限名称 描述
CHANGE_NETWORK_STATE Allows applications to change network connectivity state
CHANGE_WIFI_STATE Allows applications to change Wi-Fi connectivity state
ACCESS_NETWORK_STATE Allows applications to access information about networks
ACCESS_WIFI_STATE Allows applications to access information about Wi-Fi networks
3、改变WIFI网卡的状态
对WIFI网卡进行操作需要通过WIFIManager对象牙塔来进行获取该对象的方法如下:
WifiManager wifiManager = (WifiManager) ContextActivity.this.getSystemService(Context.WIFI_SERVICE);
打开WIFI网卡
wifiManager.setWifiEnabled(true);
关闭WIFI网卡
wifiManager.setWifiEnabled(false);
获取网卡当前的状态
wifiManager.getWifiState();
Socket编程
Socket的英文原意是“插座”
所谓socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。
应用程序通常通过“套接安”向网络发出请求或者应答网络请求。
Service编程
Service是什么
Service是一个应用程序组件
Service没有图形化界面
Service通常用来处理一些耗时比较长的操作
可以使用Service更新ContentProvider,发送Intent以及启动系统的通知等待
Service不是什么
Service不是一个单独的进程。
Service不是一个线程
项目功能分析
MP3播放器主要功能
1、播放MP3文件
2、在播放MP3文件的同时显示歌词
3、从服务器下载歌词列表
4、从服务器下载MP3和LRC文件
代码编写
1、下载服务器端的XML文件
2、解析XML文件
3、完成文件列表更新
卸载程序 adb uninstall XXX
发表评论
-
Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
2015-12-18 22:23 520转载请注明出处:http:// ... -
android arcgis map应用
2013-10-14 20:11 13921 符号渲染 1.1 Symbol Symbol主要是对Gr ... -
lost android 开发教程二
2012-04-19 13:13 1932第二季课程介绍 1、控件使用方法介绍 Sprinner, ... -
3G应用开发之Android
2011-04-10 21:12 1657什么是3G 3G,全称为3rd Generation,中文含义 ... -
扫雷游戏
2011-02-25 16:32 1259MineSweeper是一个不错的Android开源扫雷游戏, ... -
应用、permission、资源
2011-02-25 13:45 1488应用 为程序添加Menu菜单 //创建OptionsMenu ... -
文件存取、数据库编程
2011-02-25 13:41 747文件存取、数据库编程 -
新版Android开发可视化UI设计DroidDraw
2011-02-24 15:16 1285新版Android开发可视化UI设计DroidDraw -
Android 基础UI编程4
2011-02-23 11:39 1406Android 基础UI编程 专业相框设计 ImageView ... -
Android UI编程基础3
2011-02-23 09:11 1091Android UI编程基础 EditText 与TextVi ... -
Android 基础UI编程2
2011-02-21 10:29 1080Android 基础UI编程 标题、状态栏的隐藏 标题栏隐藏 ... -
Android 基础UI编程1
2011-02-18 15:45 962Android 基础UI编程 更改与显示文字标签 TextVi ... -
android开发--布局
2011-02-17 16:25 1060Android应用开发3 使用Bundle在Activity间 ... -
Android 模拟器
2011-02-17 15:40 1476Android 模拟器 模拟器参数 参数格式 option 选 ... -
Android开发--Dalvik ADB
2011-02-17 10:41 1543Android虚拟机Dalvik Dalvik冲击 随着Goo ... -
Android开发环境搭建
2011-02-17 09:38 1355Android开发环境搭建 ADV的创建 ADT0.9.1 版 ... -
基础入门一
2011-02-17 09:12 1090开放手机联盟--Open HandsetAlliance 什么 ...
相关推荐
这篇“Android基础教程PPT”旨在引导初学者了解如何使用Eclipse环境进行Android应用开发。首先,我们从创建或导入Android工程开始。 要开启一个新的Android工程,你需要在Eclipse中选择[File]->[New]->[Project],...
《Android基础教程 第三版》是一本针对初学者和进阶开发者的重要参考资料,全面覆盖了Android应用开发的基础知识。此版本的PDF版本以其高质量的文本和包含源码的特点,为学习者提供了便捷的学习途径。书中的内容围绕...
### Android基础教程(第3版·修订版)关键知识点概览 #### 一、书籍概述与定位 《Android基础教程(第3版·修订版)》是一部专为Android开发新手及中级开发者准备的基础教程。本书延续了Pragmatic系列图书的一贯风格...
《Android基础教程(第三版)》是一本深受开发者欢迎的指南,它涵盖了Android开发的核心概念和技术,旨在帮助初学者和有经验的开发者更好地理解和实践Android应用开发。这本书的配套源码提供了丰富的实例,使得读者...
在Android基础的学习中,"Android基础-02"这一主题主要涵盖了Android开发的基本概念和核心组件,这些都是构建Android应用程序的基础。下面将详细讲解这些知识点。 首先,Android是一种基于Linux内核的操作系统,...
**Android基础教程4** 在Android开发的学习过程中,基础教程4主要涵盖了Android开发的多个关键方面,包括用户界面设计、文件存取、数据库编程、应用程序管理、权限控制以及资源管理等核心概念。以下是对这些主题的...
2015年发布的这份Android基础入门教程详细介绍了Android系统架构、开发环境的搭建、用户界面设计以及各种基础知识点,为初学者提供了系统的学习路径。 首先,教程介绍了Android系统的基本概念,包括系统架构和应用...
这个"2015最新Android基础入门教程PDF版打包合集"是为初学者准备的宝贵资源,旨在帮助他们快速掌握Android应用开发的基本概念和技术。以下是这个教程合集中可能包含的一些关键知识点: 1. **Android简介**:首先,...
《Android基础教程 第4版》是一本针对初学者和进阶者全面介绍Android开发的书籍。本书涵盖了Android开发的基础知识,旨在帮助读者掌握构建Android应用的核心技能。在深入学习之前,我们先了解一下Android系统的基本...
Android基础与应用开发教程 Android基础与应用开发教程
本资源为2015年发布的Android基础入门教程的PDF合集,对于初学者来说,是一份非常有价值的参考资料。在Android开发领域,基础知识是构建所有复杂应用的基础,这份教程将帮助你逐步掌握这一领域的核心概念。 一、...
Android基础开发与实践
Android 基础笔记 Android 基础笔记是 Android 开发的入门知识点总结,涵盖了 Android 开发的基础知识点,从 Android 发展史到自定义 ContentProvider 的实现。 一、Android 发展史 Android 的发展史可以追溯到 ...
《Android基础教程(第四版)随书源码》是一份宝贵的学习资源,为读者提供了深入理解Android开发的基础。这份源码涵盖了Android应用开发的核心概念和技术,包括用户界面设计、数据存储、网络通信、多媒体处理等多个...
Android基础入门教程,网上教程,打包成chm,看得时候方便一些 教程于2015年7月开始撰写,耗时半年,总共148节,涵盖了Android基础入门的大部分知识。
《Android学习指南》是针对初学者的一份详尽教程,旨在提供全面的Android基础知识,帮助读者从零开始掌握Android应用开发。这份PDF文档涵盖了Android开发的各个方面,包括环境搭建、编程语言基础、UI设计、数据存储...
android基础教程,里边包括新版Android开发教程&笔记1--基础入门,Android开发教程&笔记2--基础入门二,Android开发教程&笔记3--环境搭建与解析,Android开发教程&笔记4--Dalvik ADB Android开发教程+笔记5--模拟器...
android基础.ppt activety service broadcast contentprovider
**Android基础教程** Android是一种基于Linux内核的开源操作系统,主要应用于移动设备,如智能手机和平板电脑。这个基础教程旨在帮助初学者理解Android开发的基本概念和技术。教程可能涵盖了以下几个核心主题: 1....