009android初級(jí)篇之APP中使用系統(tǒng)相機(jī)相冊(cè)等集成應(yīng)用

009android初級(jí)篇之APP中使用系統(tǒng)相機(jī)相冊(cè)等集成應(yīng)用

android應(yīng)用中使用相機(jī)功能,大致有兩種方式實(shí)現(xiàn):

  1. 直接調(diào)用系統(tǒng)內(nèi)部的相機(jī)程序,顯示的也是系統(tǒng)預(yù)設(shè)的界面(簡(jiǎn)單,只有簡(jiǎn)單的拍照功能);
  2. 自己去implement一個(gè)相機(jī)程序(不難,較具備彈性,但相對(duì)復(fù)雜);

權(quán)限

如果需要拍照功能,則需要在AndroidManifest.xml文件中添加權(quán)限:

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

調(diào)用系統(tǒng)相機(jī)應(yīng)用

這是第一種方式
在啟動(dòng)相機(jī)前先指定好圖片的文件位置,通知intent,同時(shí)也保留在成員變量中。然后在函數(shù)中,可以直接打開該文件

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);

獲取返回值

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
參考鏈接, 該功能我未實(shí)現(xiàn)
Android 自定義camera

同樣的方法可以調(diào)用系統(tǒng)相冊(cè)

 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中獲得選擇的圖片

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
呼叫指定的電話號(hào)碼。

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
調(diào)用撥號(hào)面板
Intent intent=new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086");
startActivity(intent);

3.Intent.Action.ALL_APPS

String: andriod.intent.action.ALL_APPS
列出所有的應(yīng)用。

4. Intent.ACTION_CALL_PRIVILEGED

String:android.intent.action.CALL_PRIVILEGED
調(diào)用skype的action

    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.
相當(dāng)于按“撥號(hào)”鍵。
Intent intent = new Intent(Intent.ACTION_CALL_BUTTON);
startActivity(intent);

6. Telephony.SMS_RECEIVED

String: android.provider.Telephony.SMS_RECEIVED
接收短信的action
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
<data android:host="localhost"/>
</intent-filter>

7. Intent.ACTION_GET_CONTENT

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

8. Intent.ACTION_BATTERY_LOW;

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

9. Intent.ACTION_SEND

String: android.intent.action.Send
發(fā)送郵件的action

10. Intent.ACTION_CLOSE_SYSTEM_DIALOGS

當(dāng)屏幕超時(shí)進(jìn)行鎖屏?xí)r,當(dāng)用戶按下電源按鈕,長(zhǎng)按或短按(不管有沒跳出話框),進(jìn)行鎖屏?xí)r,android系統(tǒng)都會(huì)廣播此Action消息

11. Intent.ACTION_MAIN

String: android.intent.action.MAIN
標(biāo)識(shí)Activity為一個(gè)程序的開始。

12. Intent.ACTION_POWER_CONNECTED;

插上外部電源時(shí)發(fā)出的廣播

13 Intent.ACTION_POWER_DISCONNECTED;

已斷開外部電源連接時(shí)發(fā)出的廣播

14.Intent.ACTION_ANSWER

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

15 .Intent.ACTION_BUG_REPORT

String: android.intent.action.BUG_REPORT
顯示Dug報(bào)告。

16. android.intent.action.MAIN

決定應(yīng)用程序最先啟動(dòng)的Activity

17.android.intent.category.LAUNCHER

決定應(yīng)用程序是否顯示在程序列表里

如果只有一個(gè)activity的應(yīng)用程序只聲明了      android.intent.action.MAIN ,沒有聲明       android.intent.category.LAUNCHER,eclipse運(yùn)行是將報(bào)錯(cuò),桌面也不會(huì)有圖標(biāo)。
如果存在多個(gè)activity都聲明了android.intent.action.MAIN與android.intent.category.LAUNCHER。將會(huì)有多個(gè)圖標(biāo)在桌面上。

action的操作有很多,需要的話,繼續(xù)百度。

參考鏈接

Android 如何從系統(tǒng)圖庫中選擇圖片

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容