2012-03-13 25 views
27

Tôi đang sử dụng một ý định mở camera với các ứng dụng bản địa:Làm cách nào để khởi chạy camera trước với mục đích?

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    Uri photoUri = Uri.fromFile(getOutputPhotoFile()); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 

    startActivityForResult(intent, CAMERA_PHOTO_REQUEST_CODE); 

Mỗi khi camera được mở (trước/sau máy ảnh) cũng giống như lần cuối cùng ứng dụng máy ảnh tự nhiên này đã được mở. Có nghĩa là nếu lần cuối tôi đóng ứng dụng máy ảnh gốc, máy ảnh sau hoạt động, vì vậy khi tôi khởi chạy ý định cho máy ảnh, camera sau sẽ hoạt động.

Tôi muốn khởi chạy trực tiếp camera trước với mục đích. Có ai biết làm thế nào để làm điều đó?

+1

liên kết này có thể trợ giúp đầy đủ http://stackoverflow.com/questions/2779002/how-to-open-front-camera-on-android-platform – Triode

+0

Nó được thực hiện ở đó mà không có ý định. Cảm ơn anyway – Yaniv

+0

@ Yaniv, Bạn đã có giải pháp cho việc này chưa? – honey

Trả lời

0

Bạn đã thử xem adb logcat trong khi chuyển sang camera trước trong ứng dụng máy ảnh gốc của mình chưa? Nếu nó thực sự là một hoạt động khác, sau đó nó sẽ hiển thị như vậy ở đó và bạn chỉ có thể sao chép ý định vào ứng dụng của bạn. Nếu nó không xuất hiện, bạn sẽ không may mắn, tôi đoán vậy.

+0

Không có gì liên quan trên logcat. Dù sao cũng cảm ơn bạn. – Yaniv

2

Không có ý định (AFAIK) nhắm mục tiêu cụ thể đến camera phía trước.

Để làm điều đó theo lập trình: Android SDK < = 2.2 chỉ hỗ trợ sử dụng một máy ảnh duy nhất (camera quay mặt sau đầu tiên). Đối với 2.3+, bạn có thể lặp qua các camera và tìm ra cái nào là mặt trước (nếu có). Nó sẽ giống như ...

Camera cam = null; 
Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
for (int camNo = 0; camNo < Camera.getNumberOfCameras(); camNo++) { 
    CameraInfo camInfo = new CameraInfo(); 
    Camera.getCameraInfo(camNo, camInfo); 
    if (camInfo.facing.equals(Camera.CameraInfo.CAMERA_FACING_FRONT)) { 
     cam = Camera.open(camNo); 
    } 
} 
if (cam == null) { 
    // no front-facing camera, use the first back-facing camera instead. 
    // you may instead wish to inform the user of an error here... 
    cam = Camera.open(); 
} 
// ... do stuff with Camera cam ... 

Ví dụ này chỉ là xương và không cung cấp bất kỳ lỗi nào (cần thiết).

EDIT: Bạn cũng cần thêm chúng vào biểu hiện của bạn:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" android:required="false" /> 
<uses-feature android:name="android.hardware.camera.front" android:required="false" /> 
+0

Tôi biết mã này như bạn đã viết. Nhưng tôi phải làm vậy với một ý định. Dù sao cũng cảm ơn bạn. – Yaniv

+0

Đang nhận "Máy ảnh không mở được: Không thể kết nối với dịch vụ máy ảnh" trên thiết bị samsung (phiên bản Android 4.04). –

30

Lời cảnh báo: một của nó Hack

Thêm phần này vào

intent.putExtra("android.intent.extras.CAMERA_FACING", 1); 

Giải pháp này ý định isn' bền vững, sử dụng mã thử nghiệm của ứng dụng Máy ảnh. Để biết thêm thông tin, hãy xem phương thức tĩnh "getCameraFacingIntentExtras" trong lớp Util của dự án AOSP Camera.

Cập nhật: Hình như rằng nó đã được vô hiệu hóa trong L

+0

Chắc chắn là một hack, nhưng hoạt động trên Galaxy Nexus. – Brandon

+0

Tôi đã thử điều này nhưng nó không hoạt động, bạn có thể hellp tôi ?? – LuminiousAndroid

+0

hoạt động với nexus 5 –

0

Hãy thử điều này:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { 
    intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1); 
} else { 
    intent.putExtra("android.intent.extras.CAMERA_FACING", 1); 
} 
8

Taken từ shortcut của Google Máy dành cho Android 7.1 (nhưng nên làm việc với Androids cũ)

intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true); 

Vì vậy, kết hợp với các câu trả lời trước đây, điều này phù hợp với tôi trên tất cả các điện thoại tôi có thể đã thử nghiệm trên

intent.putExtra("android.intent.extras.CAMERA_FACING", android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT); 
intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1); 
intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true); 
+0

không hoạt động đối với samsung galaxy j7 – VishAl

+0

Không hoạt động ở bất kỳ MOTO nào:/ –

+0

Không hoạt động với moto G4 plus (7.0) –

Các vấn đề liên quan