Android: Làm thế nào để sử dụng webcam trong giả lập?


81

Tôi đang kết nối webcam với trình mô phỏng của mình bằng cách đặt camera trước thành "webcam0" trong Trình quản lý AVD. Khi tôi khởi động ứng dụng máy ảnh của trình giả lập, tôi gặp lỗi

CameraService::connect X (pid 702) rejected (invalid cameraId 0).

Đây là phần có liên quan của mã nguồn Android:

sp<ICamera> CameraService::connect(
    const sp<ICameraClient>& cameraClient, int cameraId) {

    int callingPid = getCallingPid();

    [...]

    if (cameraId < 0 || cameraId >= mNumberOfCameras) {
        LOGE("CameraService::connect X (pid %d) rejected (invalid cameraId %d).",
            callingPid, cameraId);
        return NULL;
    }

    [...]
}

Webcam đã được chỉ định đúng ID là 0 vì chỉ có 1 camera. Tuy nhiên, mNumberOfCamerascó lẽ vẫn là 0. Điều này có nghĩa là máy ảnh đang được đăng ký bởi trình giả lập, nhưng nó không bận tâm đến việc cập nhật số lượng máy ảnh được kết nối.

Làm cách nào để kết nối webcam để trình giả lập nhận dạng đúng?

Chỉnh sửa: lệnh emulator -webcam-list -avd <name of your AVD>trong \android-sdks\toolscho kết quả:

List of web cameras connected to the computer:
Camera `webcam0` is connected to device `AndroidEmulatorVC0` on channel 0 using pixel format `BGR4`

Khi tôi khởi chạy webcam từ trình quản lý AVD của Eclipse hoặc sử dụng emulator -camera-front webcam0 -avd <name of your AVD>, tôi nhận được cửa sổ sau:

nhập mô tả hình ảnh ở đây

Chỉnh sửa 2: Đây dường như là một lỗi trong trình giả lập. Câu trả lời gợi ý cho bạn biết phải làm gì để thiết lập máy ảnh, nhưng không giải quyết được vấn đề cho tôi. Cuối cùng tôi đã giải quyết nó bằng cách sử dụng một máy tính xách tay có tích hợp webcam. Có lẽ một webcam USB khác cũng có thể hoạt động.

Câu trả lời:


110

CẬP NHẬT

Trong Android Studio AVD:

  1. Mở Trình quản lý AVD:

Menu AVD

  1. Thêm / Chỉnh sửa AVD:

Dải AVD cụ thể

  1. Nhấp vào Cài đặt nâng cao ở cuối màn hình:

Cài đặt nâng cao AVD

  1. Đặt máy ảnh bạn chọn làm máy ảnh trước / sau:

Cài đặt Máy ảnh AVD


3
Bạn không nên đặt camera trước và sau của cùng một nguồn.
Chris River

1
@ChrisRiver Tại sao không? Nó không thành vấn đề.
DaveTheMinion

2
Mát mẻ! Nhưng làm thế nào để thay đổi webcam nếu chúng ta có nhiều hơn một?
walkmn

2
Nó ngay lập tức bị treo giả lập khi máy ảnh khởi động. Tôi đang sử dụng máy mac.
Milind Mevada

2
@walkmn Bạn có thể sử dụng cam thay thế qua CLI:cd "${ANDROID_HOME}/tools"; ./emulator -avd $VIRTUAL_DEVICE_AVD_ID -camera-back webcam1
steamer 25

41

Làm theo các bước dưới đây trong Eclipse.

  1. Goto -> Trình quản lý AVD
  2. Tạo / chỉnh sửa AVD.
  3. Phần cứng> Mới:
  4. Định cấu hình máy ảnh quay mặt lại
  5. Nhấp vào giá trị thuộc tính và chọn = "webcam0".
  6. Sau khi hoàn thành tất cả các phần trên, webcam sẽ được kết nối. Nếu không thì bạn cần kiểm tra trình điều khiển WebCam của mình.

Kiểm tra tại đây để biết thêm thông tin: Làm thế nào để sử dụng máy ảnh web trong trình giả lập Android để chụp ảnh trực tiếp?

nhập mô tả hình ảnh ở đây


2
Tôi nghĩ đây là một giao diện người dùng cũ hơn cho trình quản lý AVD. Tôi đã từng có một cửa sổ trông như thế này, nhưng bây giờ tôi có thể chọn camera trước và sau từ menu thả xuống chuyên dụng.
1 ''

Tôi sử dụng máy mac nên eclipse trông theo cách này trong mac osx. Vì vậy, các cửa sổ và menu có thể khác nhau trong Microsoft windows và linux os.
Lalith B

Lưu ý rằng bạn cũng cần chọn đúng API. Bạn có thể chọn mô phỏng cho API 10 nhưng nó sẽ không hoạt động. Tôi nghĩ API 16 là API đầu tiên thực sự hỗ trợ nó.
Nux

Không có mô phỏng nào dựa trên ADT và không dựa trên Android API. Tôi nghĩ ADT hỗ trợ giả lập từ năm 19.
Lalith B

Trong Android Studio, ở bước 3, hãy chọn nút "Hiển thị cài đặt nâng cao" để hiển thị các tùy chọn máy ảnh.
eldes

7

Tôi khuyên bạn nên xem bài đăng trên blog được đánh giá cao này, bài đăng này quản lý để đưa ra giải pháp cho vấn đề bạn đang gặp phải:

http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html

Mã của anh ấy dựa trên các API Android hiện tại và sẽ hoạt động trong trường hợp của bạn khi bạn đang sử dụng API Android gần đây.


Tôi đã thấy điều này, nhưng tôi cho rằng nó đã lỗi thời. Tôi sẽ sử dụng nó nếu không còn cách nào khác. Tuy nhiên, trình quản lý AVD cho phép bạn chỉ định webcam làm máy ảnh trước hoặc sau, vì vậy tôi giả sử trình giả lập có khả năng sử dụng webcam làm đầu vào.
1 ''

Nhân tiện, emulator -webcam-list -avd <name of your AVD>lệnh cho bạn biết điều gì? Nếu bạn đã thay đổi các thuộc tính của AVD để thiết lập webcam của bạn để webcam0, hãy thử bắt đầu nó bằng cách sửemulator -camera-front webcam0 -avd <name of your AVD>
Halim Qarroum

3

Tôi khuyên bạn nên kiểm tra các trình điều khiển và cập nhật chúng nếu cần thiết.


2
Trình điều khiển của tôi, mặc dù đã 6 năm tuổi, được cho là đã cập nhật và tôi không thể tìm thấy phiên bản mới hơn trực tuyến. Tôi có thể thử thay đổi máy ảnh nếu tôi có thể tìm thấy một cái khác.
1 ''
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.