У меня есть реактивный SPA, который я построил, и он находится в Cordova. Я использую пакет npm, который позволяет мне снимать фото с видео. Это не работает после сборки apk, но отлично работает в сети. То же самое относится и к видео, которое у меня есть на сайте, воспроизводится в Интернете, не работает, когда находится внутри apk.
код внутри компонента для рендеринга видео / изображения:
<div className='modal_inner' id='player'>
{this.state.started === true ? <button className='btn' onClick={() => {
this.takePhoto() }}><span>Take photo</span></button> : null}
<div className='video_wrapper'>
<video
ref={this.videoRef}
autoPlay={true}
/>
{this.state.dataUri.length > 0 ? <img alt='imgCamera'
className='camera_image' src={this.state.dataUri} /> : null}
</div>
</div>
И функции, которые работают с этим:
import CameraPhoto, { FACING_MODES } from 'jslib-html5-camera-photo';
constructor(props){
this.state={
dataUri:''
}
this.cameraPhoto = null;
this.videoRef = React.createRef();
}
componentDidMount(){
this.cameraPhoto = new CameraPhoto(this.videoRef.current);
}
takePhoto() {
const config = {
sizeFactor: 0.5
};
let dataUri = this.cameraPhoto.getDataUri(config);
this.setState({ 'dataUri': dataUri });
this.stopCamera();
localStorage.setItem('photo uri', this.state.dataUri);
}
stopCamera() {
this.cameraPhoto.stopCamera()
.then(() => {
console.log('Camera stopped!');
})
.catch((error) => {
console.log('No camera to stop!:', error);
});
}