2011-12-18 33 views
7

Tôi đã tự hỏi làm thế nào để cho android biết rằng ứng dụng của tôi là ứng dụng máy ảnh, vì vậy các ứng dụng khác biết rằng họ có thể bắt đầu ứng dụng của tôi để tải ảnh. Ví dụ: với pixlr-o-matic bạn có thể chọn một hình ảnh từ thư viện hoặc bạn có thể yêu cầu nó từ một ứng dụng máy ảnh mà bạn chọn.android: cách đăng ký ứng dụng của tôi là "ứng dụng máy ảnh"

chỉnh sửa: làm cách nào để trả lại hình ảnh cho ứng dụng gọi điện?

Trả lời

11

Điều này được thực hiện với bộ lọc ý định. Thêm thẻ sau đây vào tệp kê khai của bạn:

<activity android:name=".CameraActivity" android:clearTaskOnLaunch="true"> 
    <intent-filter> 
     <action android:name="android.media.action.IMAGE_CAPTURE" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

Bây giờ ứng dụng của bạn sẽ xuất hiện trong danh sách khi người dùng muốn chụp ảnh.

EDIT:

Đây là cách thích hợp để trở lại một bitmap:

Uri saveUri = (Uri) getIntent().getExtras().getParcelable(MediaStore.EXTRA_OUTPUT); 

if (saveUri != null) 
{ 
    // Save the bitmap to the specified URI (use a try/catch block) 
    outputStream = getContentResolver().openOutputStream(saveUri); 
    outputStream.write(data); // write your bitmap here 
    outputStream.close(); 
    setResult(RESULT_OK); 
} 
else 
{ 
    // If the intent doesn't contain an URI, send the bitmap as a Parcelable 
    // (it is a good idea to reduce its size to ~50k pixels before) 
    setResult(RESULT_OK, new Intent("inline-data").putExtra("data", bitmap)); 
} 

Bạn cũng có thể kiểm tra android built-in Camera app source code.

+0

xin lỗi, đã quên mất điều gì đó- tôi vừa chỉnh sửa câu hỏi – stoefln

+0

Tôi đã chỉnh sửa câu trả lời của mình. – Dalmas

+0

Không có vấn đề gì với việc đưa hình ảnh lớn vào phần Extras? Nó sẽ không tốt hơn để trả lại đường dẫn đến hình ảnh? – stoefln

3

Bạn nên chỉ định bộ lọc Ý định cho Hoạt động của mình, điều này sẽ chỉ định rằng ứng dụng của bạn có thể được bắt đầu chụp ảnh.

<intent-filter> 
      <action android:name="android.media.action.IMAGE_CAPTURE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

Hy vọng điều này sẽ hữu ích!

+0

Đã giúp bạn? –

+0

xin lỗi, quên điều gì đó- tôi vừa chỉnh sửa câu hỏi – stoefln

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