

カメラを呼び出して撮影した写真orギャラリから選択した写真をアップロードするツールを作っています。  
スマホにインストールして動作確認中ですがandroidでの挙動が思ったようにいきません。

iPhoneの場合、ボタンをタップすると「写真またはビデオを取る」「フォトライブラリ」「その他」「キャンセル」が表示されます。  
androidの場合「次から開く」というメニューが出て、「ドライブ」や「ギャラリー」はあるのですがカメラで撮影できそうなアイテムはありません。  
また、写真を長押ししても複数選択できない状態です。

プラグインはCameraとCaptureを有効にしています。  
HTML内で下記のように書いています。

[code]

        input type="file" id="img" accept="image/*;capture=camera" multiple="multiple">
    
[/code]

iPhoneと同じような挙動にするには、何か他の記述が必要でしょうか？

\---追記---  
アプリのパーミッションはAndroidManifest.xmlに  
＜uses-permission android:name="android.permission.CAMERA" />を追記して、  
端末のアプリ情報で「写真と動画の撮影」が付いているのは確認しています。  
<https://support.google.com/googleplay/answer/6014972?hl=ja>


CC BY-SA 3.0
2016-01-20T02:44:41.063
21100
2016-07-11T23:44:29.623
2016-01-21T02:50:04.147
13177
13177
question
monaca html5
Monacaのinputタグからカメラを起動したい


オプションの`capture`が`accept`に入ってるけど、こうじゃないのかなぁ？と……

[code]

    <input type="file" id="img" accept="image/*" capture="camera" multiple="multiple">
    
[/code]


CC BY-SA 3.0
2016-01-21T00:57:38.557
21140
2016-01-21T00:57:38.557
21100
answer


Monacaで使用しているCordovaのソースコード(Androidのネイティブコード)を確認してみたのですが、Input[Type="FILE"]で呼ばれるメソッド(SystemWebChromeClient.javaのopenFileChooserやonShowFileChooser)で指定されているIntentが

[code]

    android.intent.action.GET_CONTENT
    
[/code]

として実装されているため、カメラの起動は出来ないようです。（カメラを使いたい時は、`android.media.action.IMAGE_CAPTURE`というインテントを使う)

そのため、カメラを起動させたい場合は、カメラプラグインを利用した方が良いと思います。  
その場合、カメラプラグインで取得した画像を、そのままinput
type="file"に紐づけることは出来ないので、用途に応じて以下のように対応すると良いのではないでしょうか。  
1\. サーバーに送信するのであればFileTransferプラグインを使用  
2\. デバイス内に画像を保存するなら、Fileプラグインを使用  
3\. Ajaxを使いたいのであれば、FormDataオブジェクトを使って実装(<http://blog.asial.co.jp/1271>)


CC BY-SA 3.0
2016-07-11T23:44:29.623
27548
2016-07-11T23:44:29.623
8848
21100
answer