一.生成、保存xml文件 android
1.生成:Xml.newSerializer() 數據庫
設置Output參數: json
1.能夠是 緩存
File file=new File(this.getContext().getFileDir(),"person.xml"); 網絡
FileOutputStream outStream=new FileOutputStream(file); ide
2.能夠是寫入器: 函數
FileOutputStream outStream=this.getContext().openFileOutputStream("",context.MADE_PRIVATE); 動畫
OutputStreamwriter writer=new OutputStreamWriter(outStream,"UTF-8"); this
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);是指發送意圖,實現廣播
用 服務 實現電話竊聽
使用服務
一、建立服務類,繼承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
一、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