[AC-1271] e.intent.data is null for video recording
| GitHub Issue | n/a |
|---|---|
| Type | Bug |
| Priority | n/a |
| Status | Resolved |
| Resolution | Cannot Reproduce |
| Resolution Date | 2015-09-15T04:02:44.000+0000 |
| Affected Version/s | n/a |
| Fix Version/s | n/a |
| Components | Studio, Titanium SDK & CLI |
| Labels | n/a |
| Reporter | Anis Vora |
| Assignee | Shak Hossain |
| Created | 2014-08-13T10:36:38.000+0000 |
| Updated | 2016-03-08T07:37:40.000+0000 |
Description
Hello,
We are trying to record video in android device as per : https://gist.github.com/dawsontoth/832488
But we have very wired issue same code is working fine in some device and in many device (like HP Slate 21 Pro) it is giving NULL for e.intent.data and not able to get recorded video.
Please help.
Hello Experts, Any update on this ? Regards, Anis
Hello, Android video recording is working according to the sample code below.
Test Environment
Command-Line Interface, version 4.1.2 SDK 4.1.0.GA Android 4.4.2, 5.1.0Code Sample
The code is working in Android. We don't have the device (HP Slate 21 Pro) to test. Thanks./** * This sample lets you record and share video with Appcelerator Titanium on Android. * REQUIRES THE 1.6.0 RC OF TITANIUM MOBILE SDK * http://developer.appcelerator.com/blog/2011/02/release-candidate-for-titanium-mobile-1-6-0.html */ /** * First, create our UI. We'll have two buttons: record, and share. */ var win = Titanium.UI.createWindow({ title: 'Video Recording from Appcelerator Titanium', backgroundColor: '#fff' }); var recordButton = Titanium.UI.createButton({ top: 10, left: 10, right: 10, height: 35, title: 'Record Video' }); win.add(recordButton); var shareButton = Titanium.UI.createButton({ top: 50, left: 10, right: 10, height: 35, title: 'Share Recorded Video', visible: false }); win.add(shareButton); var saveButton = Titanium.UI.createButton({ top: 100, left: 10, right: 10, height: 35, title: 'Save Recorded Video', visible: false }); win.add(saveButton); win.open(); /** * We'll use the following variable to keep track of the result of our recording action. */ var videoUri = null; /** * When they click this, we'll start the video capture activity and wait to hear back from it. */ recordButton.addEventListener('click', function() { // http://developer.android.com/reference/android/provider/MediaStore.html var intent = Titanium.Android.createIntent({ action: 'android.media.action.VIDEO_CAPTURE' }); Titanium.Android.currentActivity.startActivityForResult(intent, function(e) { if (e.error) { Ti.UI.createNotification({ duration: Ti.UI.NOTIFICATION_DURATION_LONG, message: 'Error: ' + e.error }).show(); } else { if (e.resultCode === Titanium.Android.RESULT_OK) { videoUri = e.intent.data; Ti.UI.createNotification({ duration: Ti.UI.NOTIFICATION_DURATION_LONG, message: 'Video captured; now share or save it!' }).show(); // note that this isn't a physical file! it's a URI in to the MediaStore. shareButton.visible = true; saveButton.visible = true; } else { Ti.UI.createNotification({ duration: Ti.UI.NOTIFICATION_DURATION_LONG, message: 'Canceled/Error? Result code: ' + e.resultCode }).show(); } } }); }); /** * When they click this, we'll start an activity with an intent chooser to let the user * choose how they want to share their video. */ shareButton.addEventListener('click', function() { var intent = Titanium.Android.createIntent({ action: Titanium.Android.ACTION_SEND, type: 'application/octet-stream' }); intent.putExtraUri(Titanium.Android.EXTRA_STREAM, videoUri); Titanium.Android.currentActivity.startActivity( Titanium.Android.createIntentChooser(intent, 'Send Video via')); }); /** * When they click this, we'll save the video to the SDCard and tell the user where to find it. */ saveButton.addEventListener('click', function() { var source = Ti.Filesystem.getFile(videoUri); var target = Ti.Filesystem.getFile('appdata://sample.3gp'); // note: source.exists() will return false, because this is a URI into the MediaStore. // BUT we can still call "copy" to save the data to an actual file source.copy(target.nativePath); Ti.UI.createNotification({ duration: Ti.UI.NOTIFICATION_DURATION_LONG, message: 'Saved to: ' + target.nativePath }).show(); });