[TIMOB-1232] camera with flash on freezes
GitHub Issue | n/a |
---|---|
Type | Bug |
Priority | Medium |
Status | Closed |
Resolution | Invalid |
Resolution Date | 2011-04-15T02:47:16.000+0000 |
Affected Version/s | n/a |
Fix Version/s | Release 1.4.0 |
Components | iOS |
Labels | ios, iphone |
Reporter | Nolan Wright |
Assignee | Jeff Haynie |
Created | 2011-04-15T02:47:16.000+0000 |
Updated | 2017-03-02T19:23:10.000+0000 |
Description
see attached example. toggle flash to on, take picture and app freezes
// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor('FFF');
// create tab group
var tabGroup = Titanium.UI.createTabGroup();
//
// create base UI tab and root window
//
var win1 = Titanium.UI.createWindow({
title:'Camera Flash Test',
backgroundColor:'#fff'
});
var tab1 = Titanium.UI.createTab({
icon:'KS_nav_views.png',
title:'Camera',
window:win1
});
function isiOS4Plus()
{
// add iphone specific tests
if (Titanium.Platform.name == 'iPhone OS')
{
var version = Titanium.Platform.version.split(".");
var major = parseInt(version[0], 10);
// can only test this support on a 3.2+ device
if (major >= 4)
{
return true;
}
}
return false;
}
var cameraButton = Ti.UI.createButton({
title:'Camera Test',
height:40,
width: 280,
left:20,
top:300
});
cameraButton.addEventListener('click', function () {
if (isiOS4Plus())
{
Ti.Media.cameraFlashMode = Ti.Media.CAMERA_FLASH_OFF;
}
var overlayView = Ti.UI.createView({
height:480,
width:320,
backgroundColor:'transparent'
});
var cameraFlash = Titanium.UI.createButton({
title:'Flash: Off',
height:30,
width:100,
left:20,
top:20,
borderRadius:8
});
cameraFlash.addEventListener('click', function() {
if (!isiOS4Plus())
{
return;
}
if (Ti.Media.cameraFlashMode == Ti.Media.CAMERA_FLASH_ON)
{
cameraFlash.title = "Flash: Off";
Ti.Media.cameraFlashMode = Ti.Media.CAMERA_FLASH_OFF;
}
else
{
cameraFlash.title = "Flash: On";
Ti.Media.cameraFlashMode = Ti.Media.CAMERA_FLASH_ON;
}
});
var button1 = Titanium.UI.createButton({
title:'Shoot',
height:40,
width:100,
left:110,
top:5
});
button1.addEventListener('click', function() {
Ti.Media.takePicture();
});
var button2 = Titanium.UI.createButton({
title:'Done',
height:40,
width:100,
left:5,
top:5
});
button2.addEventListener('click', function() {
Ti.Media.hideCamera();
});
var background = Ti.UI.createView({
height:50,
width:320,
backgroundColor:'black',
bottom:0
});
background.add(button1);
background.add(button2);
overlayView.add(background);
overlayView.add(cameraFlash);
Titanium.Media.showCamera({
success:function(event)
{
},
cancel:function()
{
},
error:function(error)
{
},
showControls:false,
allowImageEditing:false,
autohide:false,
mediaTypes:Ti.Media.MEDIA_TYPE_PHOTO,
overlay:overlayView,
saveToPhotoGallery:true
});
});
win1.add(cameraButton);
tabGroup.addTab(tab1);
// open tab group
tabGroup.open();
this is an invalid test. see KS camera_overlay.js or camera_overlay_webview.js for examples
since you are calling takePicture, you'll have to either (a) set autohide:true or (b) call Ti.Media.hideCamera().
when you don't have the flash on, the interface won't show the camera flash indicator (the swirley looking image) - however, when you have a flash, it will. To cause the interface to close, you'll have to call hideCamera.
I've verified this with a standalone XCode project outside of Titanium.
I'm not sure if this is a bug or not in 4.0. It seems like the only way to do continuous pictures is to ensure that the flash is off so it doesn't show the flash view.
Closed as invalid.