一.生成、保存xml文件
1.生成:Xml.newSerializer()
设置Output参数:
1.可以是
File file=new File(this.getContext().getFileDir(),"person.xml");
FileOutputStream outStream=new FileOutputStream(file);
2.可以是写入器:
FileOutputStream outStream=this.getContext().openFileOutputStream("",context.MADE_PRIVATE);
OutputStreamwriter writer=new OutputStreamWriter(outStream,"UTF-8");
3.可以给写入器加缓存:
BufferedWriter Bwriter=new BufferidWriter(writer);
4.还可以写入内存:
StringWriter writer=new StringWriter();
FileOutputStreamWrite/Buffer
2生成文件:serializer.startTag(null,"");
For(){
serializer.startTag(null."")
Serializer.text();
serializer.endTag(null."");
}
serializer.endTag(null."");
生成后会根据Output的设置保存文件
二.SQLite数据管理(存放在应用下的database下)
1.创建数据库帮助类,继承SQLiteOpenHelper,添加构造函数,添加数据库名,在OnCreate里添加建表语句
2.dbOpenHelper实例化时自动创建数据库
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();第一次调用时、自动创建表。
3.如果要对数据进行更改,就调用此方法得到用于操作数据库的实例,该方法以读和写方式打开数据库SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
如果只对数据进行读取,建议使用此方法(先以读写的方式打开,失败后以只读的方式打开) SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
先用读写方式打开连接,若失败用只读方式打开
多次调用时同一个实例
4.通过游标:Cursor cursor = db.rawQuery("select * from person limit ?,?",
new String[]{offset.toString(), maxResult.toString()});对结果进行处理
网络部分:获取数据、http提交数据
三.获取数据(图片,网页,xml,json)
图片:通过连接得到的输入流,得到二进制码,转化成位图显示
网页:根据网页编码,把二进制编码成字符串。 ScrollView滚动条视图
四.添加activity
1.添加类,
2.添加配置,不能多次加意图过滤器(一个应用只能有一个意图过滤器)。
3.添加视图。
激活activity
1.利用意图激活activity,把组件设置给意图,
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
写法一 intent.setClass(MainActivity.this, OtherActivity.class);//设置要激活的组
写法二 intent.setComponent(new ComponentName(MainActivity.this, OtherActivity.class));//设置要激活的组件
2.把意图传给android系统,startActivity(intent);
3.android系统通过activity管理器管理activity
Activity传递数据
1.利用意图激活activity,把组件设置给意图,
2.设置参数intent.putExtra("",obj);
3.获得意图 Intent intent=this.getIntent();
4.得到数据 intent.getSringExtra("name");
5.可以用Bundle批量传输数据:
Bundle bundle = new Bundle();
bundle.putString("name", "传智播客");
bundle.putInt("age", 4);
intent.putExtras(bundle);
Activity传回数据
1.主activity设置意图:
2.startActivityForResult(intent, 100);
3.Intent intent = new Intent();
intent.putExtra("result", "这是处理结果");
setResult(20, intent);//设置返回数据,返回码
finish();//关闭activity
3.要得到返回结果要重写onActivityResult方法(返回Activity时候由系统调用)
请求码返回码
1.请求码区分那个请求,所得到的结果
2.返回码用来区分结果来自于哪个activity
意图
实现组件间的解耦
1.显式意图:显式的设置了组件
2.隐式意图:通过与意图过滤器匹配(动作action ,类别category,数据URI),并根据过滤器所在的activity执行意图,
3隐式意图可以用于不同应用之间的访问
4.过滤器可有多个动作和类别;intent只要匹配其中一个就可以执行Activity;
5.数据匹配,Uri数据匹配+Uri类别匹配
Activity生命周期
1.Activity状态:激活、暂停(被半覆盖)、停止(内存不足时优先被杀死)
广播接收器
1.创建广播接受者类,继承BroadcastReceiver 并重写onReceiver。(广播接受者的工作时长不能超过10秒,耗时工作要通过意图传递给service处理)
2.配置receiver,并配置要监听的广播意图(根据广播意图实例化接受者)
3.接受者从意图中得到数据Object[] pduses=intent.getExtras().get("pdus");(多条短信内容)
4.广播是可以被多个接受者接受的。
发送广播:当有操作系统发送广播(接受短信。。。。。。。。)
Context.sendBroadcast(intent)
Context.sendOrderBroadcast(intent);是指发送意图,实现广播
用 服务 实现电话窃听
使用服务
1、创建服务类,继承service;配置服务
2.具体实现:1获得系统服务
2.设置服务监听,服务监听状态(监听器根据监听状态来执行监听)
3.服务退出时候要清理缓存 (存放于应用下的文件)
3.服务中也不要做耗时操作,放到 线程 中操作
4.服务不会自动启动,可以用意图激活服务(eg:开机广播:)
服务与Activity进行绑定
1.在Activity中启动服务(利用intent);
Conn=new MyseviceConnection();
Intent intent=new Intent(this ,MyService.this);
//打开服务,会让服务的onbind()执行
bindService(intent,conn,BIND_AUTO_CREATE);意图、连接、打开方式
2.在service中创建一个MyBiner类,为了创建反对的Mybinder实例
3.通过MyserviceConnection的到返回的服务(一般得到接口,来调用接口的方法):
Myserviceconnection要继承serviceconnection。重写连接、失败、断开方法。连接 和断开时执行
4.断开服务: bindService(conn);
5.若先启动服务,再绑定actvity。若Activity关闭服务不会销毁
6.常用系统服务:TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
窗口服务 音频服务 全局时间服务 AlarmManager.setRepeating()设置定时,定间隔执行PandingIntent,PandingIntent可以绑定服务,每次执行服务的onstart();
音乐播放器 MediaPlayer
1、MediaPlayer:设置播放器播放
FileaudioFile=newFile(Environment.getExternalStorageDirectory(),filename);
mediaPlayer.reset()//多媒体接口要reset prepare
mediaPlayer.setDataSource(audioFile.getAbsolutePath());
mediaPlayer.prepare();
mediaPlayer.start();
2.可以利用Activity的生命周期开控制播放器的播放
视频播放器 (MediaPlayer)
1.SerfaceView来显示视频(可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图容器。
)
2.这里用到了一个类SurfaceHolder,可以把它当成surface的控制器,用来操纵surface。处理它的Canvas上画的效果和动画,控制表面,大小,像素等。
照相机 camera(摄像头)
1.利用视图显示照片预览
/*下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前*/ surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceView.getHolder().addCallback(new SurfaceCallback());实现Callback接口。。。启动硬件
2.camera = Camera.open();对Camera.Parameters进行设置
3.camera.setPreviewDisplay(surfaceView.getHolder());//通过SurfaceView显示取景画面。开启浏览camera.startPreview();
4.通过点击事件出发拍照
case KeyEvent.KEYCODE_DPAD_CENTER:
camera.takePicture(null, null, new TakePictureCallback());实现picturesCallBack接口
5.保存位图,保存结束要继续浏览要,先关掉浏览在开启浏览
camera.stopPreview();
camera.startPreview();//开始预览
刻录视频(MediaRecord)
视频刻录设置好参数,摄像头自动打开
跨进程访问
1.broadcast Activity AIDL服务(android interface definition language) content provider