Andriod 學習筆記

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

三.獲取數據(圖片,網頁,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);是指發送意圖,實現廣播

 

服務 實現電話竊聽

使用服務

一、建立服務類,繼承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

相關文章
相關標籤/搜索