Andriod 学习笔记

一.生成、保存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提交数据

三.获取数据(图片,网页,xmljson

     图片:通过连接得到的输入流,得到二进制码,转化成位图显示

      网页:根据网页编码,把二进制编码成字符串。  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

你可能感兴趣的:(andriod学习笔记)