android調用攝像頭
① 如何直接調用安卓Android的系統相機的前置攝像頭
1、在手機的設置裡面去找相機的設置,
在照相的功能下也可以在選項裡面找到更換攝像頭的選項,
一般都是按左鍵出來選單的。
2、在手機菜單裡面勾選攝像頭選項,切換到你想要的攝像頭,然後把那個屏幕切換一下,豎屏或橫屏;
3、你若是在找不到就到手機鋪裡面找售後維修或者在照片拍攝好後,在電腦上面把使用那個圖像管理器把圖片,點擊那個轉換頭,讓圖片正過來。
② 如何在Android手機上使用Chrome來調用手機攝像頭
安卓手機設置用前攝像頭拍照的步驟如下:
1,打開你手機上的照相機。
2,點擊設置選項,裡面有將用用前置攝像頭拍照的選項,勾上即可。
3,如果設置裡面沒有,在你照相時屏幕上按快門時那會有一個攝像頭轉換的標志的,點擊它即可。
③ android如何調用前置攝像頭拍照系統自帶的相機可以做到嗎
包括,攝像頭的調用無論前後都時一樣的,但是調用一般是後攝像頭,而前攝像頭在拍照里一般可以調用,其他通常情況下不會使用前攝像頭(安全有許可權管理,可以自己屏蔽或限制的功能(希望能幫到你))
④ android 中實現網頁調用攝像頭功能怎麼實現
android 中實現網頁調用攝像頭功能方法·如下: 1/apk/res/android" xmlns:tools="schemas/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".CameraWebviewActivity" > <Button android:id="@+id/bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Camera" android:layout_alignParentTop="true" /> <WebView android:id="@+id/wv" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_below="@+id/bt" /> </RelativeLayout> 4.、編寫activity: public class CameraWebviewActivity extends Activity { private final static String TAG = "CameraWebviewActivity"; private Button bt; private WebView wv; public String fileFullName;//照相後的照片的全整路徑 private boolean fromTakePhoto; //是否是從攝像界面返回的webview @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera_webview); initViews(); } private void initViews() { bt = (Button) findViewById(R.id.bt); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.out.println("----------------"); takePhoto( Math.random()*1000+1 + ".jpg"); } }); wv = (WebView) findViewById(R.id.wv); WebSettings setting = wv.getSettings(); setting.setjavaScriptEnabled(true); wv.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } }); wv.setWebChromeClient(new WebChromeClient(){ @Override//實現js中的alert彈窗在Activity中顯示 public boolean onJsAlert(WebView view, String url, String message, JsResult result) { Log.d(TAG, message); result.confirm(); return true; } }); wv.loadUrl("file:///android_asset/index.html"); final Handler mHandler = new Handler(); //webview增加javascript介面,監聽html頁面中的js點擊事件 wv.addJavascriptInterface(new Object(){ public String clickOnAndroid() {//將被js調用 mHandler.post(new Runnable() { public void run() { fromTakePhoto = true; //調用 啟用攝像頭的自定義方法 takePhoto("testimg" + Math.random()*1000+1 + ".jpg"); System.out.println("========fileFullName: " + fileFullName); } }); return fileFullName; } }, "demo"); } /* * 調用攝像頭的方法 */ public void takePhoto(String filename) { System.out.println("----start to take photo2 ----"); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_MEDIA_TITLE, "TakePhoto"); //判斷是否有SD卡 String sdDir = null; boolean isSDcardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); if(isSDcardExist) { sdDir = Environment.getExternalStorageDirectory().getAbsolutePath(); } else { sdDir = Environment.getRootDirectory().getAbsolutePath(); } //確定相片保存路徑 String targetDir = sdDir + "/" + "webview_camera"; File file = new File(targetDir); if (!file.exists()) { file.mkdirs(); } fileFullName = targetDir + "/" + filename; System.out.println("----taking photo fileFullName: " + fileFullName); //初始化並調用攝像頭 intent.putExtra(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(fileFullName))); startActivityForResult(intent, 1); } /* * (non-Javadoc) * @see android.app.Activity#onActivityResult(int, int, android.content.Intent) * 重寫些方法,判斷是否從攝像Activity返回的webview activity */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { System.out.println("----requestCode: " + requestCode + "; resultCode " + resultCode + "; fileFullName: " + fileFullName); if (fromTakePhoto && requestCode ==1 && resultCode ==-1) { wv.loadUrl("javascript:wave2('" + fileFullName + "')"); } else { wv.loadUrl("javascript:wave2('Please take your photo')"); } fromTakePhoto = false; super.onActivityResult(requestCode, resultCode, data); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.camera_webview, menu); return true; } }
⑤ Android開發怎麼調用攝像頭功能
1、現在Android智能手機的像素都會提供照相的功能,大部分的手機的攝像頭的像素都在1000萬以上的像素,有的甚至會更高。它們大多都會支持光學變焦、曝光以及快門等等。下面的程序Demo實例示範了使用Camera v2來進行拍照,當用戶按下拍照鍵時,該應用會自動對焦,當對焦成功時拍下照片。layout/activity_main.xml界面布局代碼如下:
3、接來了的MainActivity.java程序將會使用CameraManager來打開CameraDevice,並通過CameraDevice創建CameraCaptureSession,然後即可通過CameraCaptureSession進行預覽或拍照了。
⑥ Android 應用調用攝像頭如何將拍攝的視頻存到指定位置
可以自己編程調用手機的攝像頭使用MediaRecorder錄像並播放。參考http://www.jb51.net/article/33380.htm裡面有詳細的講解,謝謝。
⑦ 怎麼調用android的攝像頭拍照
我們要調用攝像頭的拍照功能,顯然
第一步必須加入調用攝像頭硬體的許可權,拍完照後我們要將圖片保存在SD卡中,必須加入SD卡讀寫許可權,所以第一步,我們應該在Android清單文件中加入以下代碼
<uses-permission android:name="android.permission.CAMERA"/>//攝像頭許可權
SD卡讀寫許可權
<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
第二步,要將攝像頭捕獲的圖像實時地顯示在手機上。
我們是用SurfaceView這個視圖組件來實現的,因此在main.xml中加入下列代碼
<SurfaceView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/surfaceview"
/>
第三步,設置窗口的顯示方式
首先獲得當前窗口Windowwindow = getWindow();//得到窗口
接著設置沒有標題requestWindowFeature(Window.FEATURE_NO_TITLE);//沒有標題
接著設置全屏 window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//設置全屏
當然,我們在拍照過程中,屏幕必須一致處於高亮狀態,因此接著加入下面代碼
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//設置高亮
至此,我們將窗口的顯示方式規定死了,然後才能設置窗口上顯示的組件(順序非常重要)
setContentView(R.layout.main);
第四步,設置SurficeView顯示控制項的屬性
找到surficeView
surfaceView = (SurfaceView)findViewById(R.id.surfaceview);
設置它的像素為800x600
surfaceView.getHolder().setFixedSize(800,480);
//下面設置surfaceView不維護自己的緩沖區,而是等待屏幕的渲染引擎將內容推送到用戶面前
surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
第五步,就是為surficeView加入回調方法(callBack)
surfaceView.getHolder().addCallback(newSurfaceCallback());
上面的回調類是我們自己定義的,代碼如下
private class SurfaceCallback implementsSurfaceHolder.Callback{
@Override
public void surfaceCreated(SurfaceHolderholder) {
try {
camera = Camera.open();//打開硬體攝像頭,這里導包得時候一定要注意是android.hardware.Camera
WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);//得到窗口管理器
Display display = wm.getDefaultDisplay();//得到當前屏幕
Camera.Parameters parameters =camera.getParameters();//得到攝像頭的參數
parameters.setPreviewSize(display.getWidth(),display.getHeight());//設置預覽照片的大小
parameters.setPreviewFrameRate(3);//設置每秒3幀
parameters.setPictureFormat(PixelFormat.JPEG);//設置照片的格式
parameters.setJpegQuality(85);//設置照片的質量
parameters.setPictureSize(display.getHeight(),display.getWidth());//設置照片的大小,默認是和屏幕一樣大
camera.setParameters(parameters);
camera.setPreviewDisplay(surfaceView.getHolder());//通過SurfaceView顯示取景畫面
camera.startPreview();//開始預覽
isPreview = true;//設置是否預覽參數為真
} catch (IOException e) {
Log.e(TAG, e.toString());
}
}
@Override
public void surfaceChanged(SurfaceHolderholder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolderholder) {
if(camera!=null){
if(isPreview){//如果正在預覽
camera.stopPreview();
camera.release();
}
}
}
}
第六步,我們必須對按鍵事件進行監聽,如是拍照還是聚焦,代碼如下
public boolean onKeyDown(int keyCode,KeyEvent event) {//處理按鍵事件
if(camera!=null&&event.getRepeatCount()==0)//代表只按了一下
{
switch(keyCode){
case KeyEvent.KEYCODE_BACK://如果是搜索鍵
camera.autoFocus(null);//自動對焦
break;
case KeyEvent.KEYCODE_DPAD_CENTER://如果是中間鍵
camera.takePicture(null, null, new TakePictureCallback());//將拍到的照片給第三個對象中,這里的TakePictureCallback()是自己定義的,在下面的代碼中
break;
}
}
return true;//阻止事件往下傳遞,否則按搜索鍵會變成系統默認的
}
------------------------------------------------------------------------------------------
private final class TakePictureCallbackimplements PictureCallback{
public void onPictureTaken(byte[] data,Camera camera) {
try {
Bitmap bitmap =BitmapFactory.decodeByteArray(data, 0, data.length);
File file = newFile(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");
FileOutputStream outputStream = newFileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 100,outputStream);
outputStream.close();
camera.stopPreview();
camera.startPreview();//處理完數據之後可以預覽
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
}
注意,代碼中有兩個回調類,一個是SurfaceCallback(),另外一個是TakePictureCallback(),初學者可能一時難以理解,通俗地講,前者是用來監視surficeView這個暫時存放圖片數據的顯示控制項的,根據它的顯示情況調用不同的方法,包括surfaceCreated(),surfaceChanged(),surfaceDestroyed(),也就不難理解為什麼會有這三個回調方法了(注意,在surfaceDestroyed()方法中必須釋放攝像頭,詳細代碼參見上方)。TakePictureCallback()是為了監視是否拍照而設計的介面,期中也僅有一個方法,camera將拍照得到的數據傳入方法,我們便可以對拍照得到的數據進行進一步處理
⑧ android 中實現網頁調用攝像頭功能怎麼實現
頁面上做一個按鈕,如打開攝像頭,它做的事情就是將頁面鏈接到一個特殊的串,如<a href=opencapture打開攝像頭</a使用安卓的webview訪問網頁頁面,同時重寫shouldOverrideUrlLoading捕獲url,當判斷url為opencapture時,調用系統攝像頭
⑨ Android開發(攝像頭的調用)(大神請進……)
打開攝像頭,要 start surfaceiew,當activity執行到onStop()時,要判斷,然後關閉surfaceiew。這樣應該就不會導致程序force close了。或者樓主您直接把force close的log信息打出來,有log才能准確的分析問題。
⑩ Android開發怎麼調用攝像頭
在Android開發過程中,有時需要調用手機自身設備的功能,上篇文章主要側重攝像頭拍照功能的調用。本篇文章將綜合實現拍照與視頻的操作
http://blog.csdn.net/mahoking/article/details/28292973