Я почти закончил разработку приложения HTML5 с помощью Appcelerator, и у меня есть одна функция, которую можно добавить, которая является функцией, позволяющей пользователю делать снимок при отправке клиент сообщение через приложение. На экране отображается конкретный div, который содержит форму сообщения, и я хотел бы, чтобы пользователь мог снимать фотографию со своего телефона и автоматически прикреплял ее к сообщению, которое затем отправляется на наш сервер.Как получить доступ к камере изнутри webview в Titanium Appcelerator
Однако, после охоты вокруг, я в тупике, как заставить ее работать. Хотя API показывает Javascript, чтобы заставить камеру работать, я не могу получить доступ к ней, и я не знаю, где должен быть найден вызов API. Это происходит в файле app.js или в собственном файле, или это не имеет особого значения, где это называется? Любая помощь/совет будут оценены по этому поводу.
EDIT
Благодаря Dragon, я сделал следующие изменения в мой код:
index.html
<div class="col-square">
<a href="#" onclick="Ti.App.fireEvent('app:fromWebView');"><i class="fa fa-camera fa-squareBlock"></i><br />Take Photo</a>
</div>
<script type="text/javascript">
Ti.App.addEventListener("app:fromTitanium", function(e) {
alert(e.message);
});
</script>
app.js
Ti.App.addEventListener('app:fromWebView', function(e){
Titanium.Media.showCamera({
success:function(event)
{
var image = event.media;
var file = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,"userImg.jpg");
file.write(image);
var data = file.nativePath;
Ti.App.fireEvent('app:fromTitanium', {message: "photo taken fine"});
},
cancel:function()
{
},
error:function(error)
{
var a = Titanium.UI.createAlertDialog({title:'Camera'});
if (error.code == Titanium.Media.NO_CAMERA)
{
a.setMessage('Please run this test on device');
}
else
{
a.setMessage('Unexpected error: ' + error.code);
}
a.show();
},
showControls:false, // don't show system controls
mediaTypes:Ti.Media.MEDIA_TYPE_PHOTO,
autohide:false // tell the system not to auto-hide and we'll do it ourself
});
});
Однако в этом случае кнопка открывает камеру вверх. Но, когда фотография берется и выбирается, она возвращается к экрану, но ничего не происходит. Затем он дает эту ошибку в отладке - «Ti не определено». Когда я затем определяю Ti, он вернет «App undefined».
Особенность этого заключается в том, что если я удалю код, который будет обрабатывать данные, отправляемые из app.js, в webview, он отлично работает, даже если код для открытия камеры из веб-браузера достаточно близок к тому же код?