Class: YesYouCam
- Inherits:
-
Object
- Object
- YesYouCam
- Defined in:
- lib/project/yesyoucam.rb
Constant Summary collapse
- OK =
Android::App::Activity::RESULT_OK
- CAPTURE_IMAGE_RC =
100- CHOOSE_IMAGE_RC =
101- DATA =
MediaStore.Images.Media.DATA
"_data"
Class Method Summary collapse
- .add_to_gallery ⇒ Object
- .bmp_data(optional_path = nil) ⇒ Object
- .camera_exists? ⇒ Boolean
-
.capture_photo ⇒ Object
Returns true or false on success of firing a photo intent.
- .choose_photo ⇒ Object
- .photo_path ⇒ Object
- .pic_path_from_uri(content_uri) ⇒ Object
- .pic_to_png(quality = 100) ⇒ Object
Class Method Details
.add_to_gallery ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/project/yesyoucam.rb', line 64 def add_to_gallery media_scan_intent = Potion::Intent.new(Potion::Intent::ACTION_MEDIA_SCANNER_SCAN_FILE) photo_file = Potion::File.new(photo_path) content_uri = Potion::Uri.fromFile(photo_file) media_scan_intent.setData(content_uri) find.app.context.sendBroadcast(media_scan_intent) end |
.bmp_data(optional_path = nil) ⇒ Object
55 56 57 58 |
# File 'lib/project/yesyoucam.rb', line 55 def bmp_data(optional_path=nil) file_path = optional_path ? optional_path : photo_path Android::Graphics::BitmapFactory.decodeFile(file_path) end |
.camera_exists? ⇒ Boolean
60 61 62 |
# File 'lib/project/yesyoucam.rb', line 60 def camera_exists? find.app.package_manager.hasSystemFeature("android.hardware.camera") end |
.capture_photo ⇒ Object
Returns true or false on success of firing a photo intent
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/project/yesyoucam.rb', line 14 def capture_photo success = false if camera_exists? # Performing this check is important because if you call startActivityForResult # using an intent that no app can handle, your app will crash. # So as long as the result is not nil, it's safe to use the intent. take_picture_intent = Potion::Intent.new(Potion::MediaStore::ACTION_IMAGE_CAPTURE) if take_picture_intent.resolveActivity(app.package_manager) # create place for photo to go photo_file = create_image_file if photo_file take_picture_intent.putExtra(Potion::MediaStore::EXTRA_OUTPUT, Potion::Uri.fromFile(photo_file)) find.activity.startActivityForResult(take_picture_intent, YesYouCam::CAPTURE_IMAGE_RC) success = true end end end success end |
.choose_photo ⇒ Object
35 36 37 38 |
# File 'lib/project/yesyoucam.rb', line 35 def choose_photo choose_pic = Potion::Intent.new(Potion::Intent::ACTION_PICK, Potion::INTERNAL_CONTENT_URI) find.activity.startActivityForResult(choose_pic, YesYouCam::CHOOSE_IMAGE_RC) end |
.photo_path ⇒ Object
51 52 53 |
# File 'lib/project/yesyoucam.rb', line 51 def photo_path @current_photo_path end |
.pic_path_from_uri(content_uri) ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'lib/project/yesyoucam.rb', line 72 def pic_path_from_uri (content_uri) cursor = find.app.context.contentResolver.query(content_uri, nil, nil, nil, nil) column_index = cursor.getColumnIndexOrThrow(YesYouCam::DATA) cursor.moveToFirst path = cursor.getString(column_index) cursor.close path end |
.pic_to_png(quality = 100) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/project/yesyoucam.rb', line 40 def pic_to_png(quality=100) bmp = Potion::BitmapFactory.decodeFile(@current_photo_path) # NOTE the instance var for current photo changes with this command create_image_file("png") image = Potion::File.new(@current_photo_path) out_stream = Potion::FileOutputStream.new(image) bmp.compress(Android::Graphics::Bitmap::CompressFormat::PNG, quality, out_stream) out_stream.flush out_stream.close end |