009android初級篇之APP中使用系統相機相冊等集成應用

android應用中使用相機功能,大體有兩種方式實現:html

  1. 直接調用系統內部的相機程序,顯示的也是系統預設的界面(簡單,只有簡單的拍照功能);
  2. 本身去implement一個相機程序(不難,較具有彈性,但相對複雜);

權限

若是須要拍照功能,則須要在AndroidManifest.xml文件中添加權限:android

<uses-permission android:name="android.permission.CAMERA"/>

調用系統相機應用

這是第一種方式
在啓動相機前先指定好圖片的文件位置,通知intent,同時也保留在成員變量中。而後在函數中,能夠直接打開該文件app

private static  final  int CAMERA_REQUESTCODE=1;

String sFileFullPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test.jpg";
Log.e("onNavi","file: "+sFileFullPath);
File file = new File(sFileFullPath);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, CAMERA_REQUESTCODE);

獲取返回值ide

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_REQUESTCODE) {
        if (resultCode == RESULT_OK) {
            ////Bitmap bmPhoto = (Bitmap) data.getExtras().get("data");
            // You can set bitmap to ImageView here  這裏能夠得到相片的縮略圖
        }
    }
}

第二種方式:自定製camera
參考連接, 該功能我未實現
Android 自定義camera函數

一樣的方法能夠調用系統相冊

private static final  int REQUESTCODE_PICK=2;

Intent mIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(mIntent,REQUESTCODE_PICK);

在onActivityResult中得到選擇的圖片.net

if(requestCode == REQUESTCODE_PICK) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        Log.e(TAG,"Select image "+picturePath);
}

Intent經常使用的ACTION

1. Intent.Action_CALL

android.intent.action.CALL
呼叫指定的電話號碼。code

Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL); 
intent.setData(Uri.parse("tel:10086");
startActivity(intent);

2.Intent.Action.DIAL

String: action.intent.action.DIAL
調用撥號面板
Intent intent=new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086");
startActivity(intent);xml

3.Intent.Action.ALL_APPS

String: andriod.intent.action.ALL_APPS
列出全部的應用。htm

4. Intent.ACTION_CALL_PRIVILEGED

String:android.intent.action.CALL_PRIVILEGED
調用skype的actionblog

Intent intent = newIntent("android.intent.action.CALL_PRIVILEGED");  
   intent.setClassName("com.skype.raider",
    "com.skype.raider.Main");
   intent.setData(Uri.parse("tel:" + phone));  
    startActivity(intent);

5. Intent.Action_CALL_BUTTON

String: android.action.intent.CALL_BUTTON.
至關於按「撥號」鍵。
Intent intent = new Intent(Intent.ACTION_CALL_BUTTON);
startActivity(intent);

6. Telephony.SMS_RECEIVED

String: android.provider.Telephony.SMS_RECEIVED
接收短信的action



7. Intent.ACTION_GET_CONTENT

String: android.intent.action.GET_CONTENT
容許用戶選擇特殊種類的數據,並返回(特殊種類的數據:照一張相片或錄一段音)

8. Intent.ACTION_BATTERY_LOW;

String: android.intent.action.BATTERY_LOW
表示電池電量低

9. Intent.ACTION_SEND

String: android.intent.action.Send
發送郵件的action

10. Intent.ACTION_CLOSE_SYSTEM_DIALOGS

當屏幕超時進行鎖屏時,當用戶按下電源按鈕,長按或短按(無論有沒跳出話框),進行鎖屏時,android系統都會廣播此Action消息

11. Intent.ACTION_MAIN

String: android.intent.action.MAIN
標識Activity爲一個程序的開始。

12. Intent.ACTION_POWER_CONNECTED;

插上外部電源時發出的廣播

13 Intent.ACTION_POWER_DISCONNECTED;

已斷開外部電源鏈接時發出的廣播

14.Intent.ACTION_ANSWER

Stirng:android.intent.action.ANSWER
處理呼入的電話。

15 .Intent.ACTION_BUG_REPORT

String: android.intent.action.BUG_REPORT
顯示Dug報告。

action的操做有不少,須要的話,繼續百度。

參考連接

Android 如何從系統圖庫中選擇圖片

相關文章
相關標籤/搜索