android調用相機拍照保存
1. android 調用系統照相機拍照後獲得圖片路徑
{privateUrimOutPutFileUri;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ButtontakePiCButton=(Button)this.findViewById(R.id.button1);
takePiCButton.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.button1:
saveFullImage();
break;
default:
break;
}
}
privatevoidsaveFullImage(){
Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
//文件夾aaaa
Stringpath=Environment.getExternalStorageDirectory().toString()+"/aaaa";
Filepath1=newFile(path);
if(!path1.exists()){
path1.mkdirs();
}
Filefile=newFile(path1,System.currentTimeMillis()+".jpg");
mOutPutFileUri=Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT,mOutPutFileUri);
startActivityForResult(intent,1);
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode==1){
UriimageUri=null;
if(data!=null){
if(data.hasExtra("data")){
Bitmapthunbnail=data.getParcelableExtra("data");
//處理縮略圖
}
}else{
//處理mOutPutFileUri中的完整圖像
}
}
}
}
2. 在Android當中IntentIntegrator可不可以與其他調用攝像機的功能共存
拍照功能在應用開發中幾乎已成為標配,例如用戶通過拍照上傳頭像。實現拍照功能的方式有兩種。第一種是使用相機API(即Camera類)來自定義拍照,第二種是使用Intent調用系統相機來拍照。其中最常見的方式是直接調用系統相機拍照來獲取照片
3. Android調用手機相機拍照,保存圖片會出現2張解決辦法。
最近項目中使用系統相機拍照,保存圖片,發現一些問題。
讀取圖片旋轉角度,然後再旋轉回去。
使用BitmapFactory.Options,能更准確的獲取圖片格式,
判斷地址末尾 .gif 有時候會不準確(不推薦)
上傳伺服器,一般使用地址,但是用戶手動刪除圖片後,地址是無效的。為了防止地址無效,可以對需要上傳圖片地址做保存,但又希望系統讀取不到,可以對保存地址進行修改。
讀取圖片地址api
我們可以去系統相冊查看兩張圖片,會發現兩張圖片的地址是不一樣的,而且兩張圖片的大小也不同。
出現2張的原因是:
(1)調用系統相機,拍照完成我們會生成一個保存地址,而這個地址是: /storage/android/data/包名/Picture/ ,這張是我們保存的拍照圖片。
(2)相同的一張圖片在哪?這個地址是:/storage/Pictures/ ,這張圖片是系統復制的App目錄下Pictures中的圖片。
所以就會出現在系統相冊兩張圖片,但兩張圖片大小不一致,地址不同。
調用系統api,只能讀取到一張,是系統復制的那張,也就是 /storage/Pictures/ 目錄下的這張,但是/storage/android/data/包名/Picture/ 目錄下的沒有讀取到。
知道了問題,就有解決辦法,可分為三種方法:
(1)第一種方法:
保存圖片的時候,修改下地址(可參照標題 3 ,這樣讓系統無法識別出這張圖片),結果就是,我讀取不到,系統也別想讀取不到,在系統相冊里也就看不到這張圖片。
(2)第二種方法:
因為api無法讀取到,那我們就直接再讀取/storage/android/data/包名/Picture/ 下的文件,把圖片一塊加入到同一個集合中用於展示,這樣所有的圖片都有了,但是系統相冊中還是有兩張圖片,為解決這個問題。
(3)第三種方法:( )
在我們保存圖片的時候,直接保存到 /storage/Pictures/ 這個目錄下,也不用系統幫我們復制了,這樣就只會出現一張,而且我們也能調用api直接讀取到,兩個問題全都解決了,完美!
(如果以上有錯誤或者有更優美的方式,感謝指出並改之,與君共勉)
這是我項目中出現的問題,希望能夠幫助到你,Thanks,Bye!
4. android打開本地照相機需要什麼許可權
在Android系統中,為了使應用能夠操作相機並進行拍照,開發者需要在應用的許可權請求中包含android.permission.CAMERA這一許可權。這一許可權的作用是允許應用訪問設備上的攝像頭,進而實現拍照、攝像等功能。在AndroidManifest.xml文件中,開發者需要明確聲明這一許可權,確保應用在運行時能夠順利獲取到相機的使用權。
值得注意的是,android.permission.CAMERA是一個危險許可權,根據Android系統的許可權管理機制,用戶在安裝應用時需要手動授權。這一機制有助於保護用戶的隱私安全,避免未經允許的訪問設備攝像頭。因此,在申請這一許可權時,開發者應當在應用中詳細解釋其必要性,以提高用戶授權的可能性。
除了android.permission.CAMERA這一核心許可權之外,為了實現更復雜的功能,開發者可能還需要申請其他相關的許可權。例如,若需訪問存儲卡以保存拍攝的照片或視頻,就需要申請android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE這兩個許可權。不過,根據最新的Android系統版本要求,僅申請android.permission.CAMERA就已經能夠滿足大部分拍照需求,除非應用確實需要訪問存儲卡。
最後,開發者需要確保在請求許可權時遵循Android系統的規范和最佳實踐。比如,在請求android.permission.CAMERA之前,應用應當先檢查當前是否已經獲得了該許可權。若未獲得,則應使用ActivityCompat.requestPermissions方法請求許可權,並在用戶授權後進行相應的操作。這樣可以避免因許可權問題導致應用崩潰或無法正常運行。
綜上所述,若要使Android應用能夠正常打開並操作本地照相機,開發者需要在應用中明確聲明android.permission.CAMERA這一許可權,並且在請求許可權時遵循相關的規范。通過合理的許可權管理和用戶溝通,開發者可以更好地滿足應用的功能需求,同時也保護了用戶的隱私安全。
5. android 調用系統照相機,保存後回到前一個activity
修改相機源碼編譯,因為相機返回功能是點2次,保存並沒有退出動作,這個不改源碼或者在相機源碼裡面加Intent 是做不到這種效果的 。 我剛想了下,在廣播或者Service裡面加 OnKeyDown 方法 ,但是廣播和service沒有這方法,所以不能夠靠監聽到 返回鍵的鍵值 4 ,從而直接 Intent到 A activity的功能就無法實現 ,所以建議修改相機源碼,即可實現 。 如果是純應用, 抱歉,能想的都想了,實現不了。