2016-06-22 24 views
0

私は反応ネイティブカメラのビデオ機能を動作させようとしていましたが、膨大な数のメソッドを試しましたが、同じエラーが発生し続けました。ここに私のコードです:反応ネイティブカメラのビデオ機能にアクセスするにはどうすればよいですか?

class MainCamera extends Component { 
    constructor() { 
    super(); 
    this.render = this.render.bind(this) 
    this.state = { cameraType: Camera.constants.Type.back } 
} 

    render() { 

return (
    <View style={styles.container}> 
    <Camera 
     ref='camera' 
     style={styles.preview} 
     aspect={Camera.constants.Aspect.fill} 
     type={this.state.cameraType} 
     captureMode={Camera.constants.CaptureMode.video} 
     captureAudio={false} 
     target={Camera.constants.CaptureTarget.disk}> 

     <TouchableHighlight 
     onPressIn={this.onPressIn.bind(this)} 
     onPressOut={this.stopVideo.bind(this)}> 
     <Icon name="video-camera" size={40} /> 
     </TouchableHighlight> 
    </Camera> 
    </View> 
); 
    } 

onPressIn() { 
    recordVideo = setTimeout(this.takeVideo.bind(this), 100); 
} 

takeVideo() { 
    this.refs.camera.capture({ 
     target: Camera.constants.CaptureTarget.disk 
    }) 
     .then(data => { 
     console.log(data); 
     }) 
     .catch(err => console.log(err)); 
    } 

stopVideo() { 
    this.refs.camera.stopCapture({}) 
    .then(data => console.log(data)) 
    .catch(err => console.log(err)); 
    } 
} 

私はstopCapture()メソッドに「.then」約束を使用する場合、私は 『『し、』未定義のプロパティを読み取ることができません』エラーが表示されるが、私は追加しない場合'.then'、何も起こらず、私はデータを受け取っていません。誰か提案はありますか?

答えて

0
takeVideo() { 
    this.refs.camera.capture({ 
     audio: true, 
     mode: Camera.constants.CaptureMode.video, 
     target: Camera.constants.CaptureTarget.disk 
    }) 
     .then((data) => { 
     console.log(data); 
     }) 
     .catch((err) => console.log(err)); 
    } 

stopVideo() { 
    this.refs.camera.stopCapture(); 
} 

stopCapture()機能は約束ではありません。

+0

これでビデオがすぐに撮れます。しかし、私が知っていた唯一の方法は、ターゲットを 'Camera.constants.CaptureTarget.cameraRoll'に変更してからカメラのロールを確認してビデオを確認することでした。私の問題は、ビデオファイルを自分の携帯電話に保存するのではなく、アプリ内でそのビデオデータを使って何か他のことをやりたいから、console.logにデータがないことです。 – hermt2

+0

Nevermind、何らかの理由でXcodeのコンソールにのみ表示され、Google Chromeデバッグツールには表示されません。それでも、私はデータを取得しています。ありがとうございました。 – hermt2

+0

私は残念ながらこのファイルを紛失し、プロジェクトを最初からやり直しています。私はそれを覚えている限り正確にすべてを持っていますが、データはまだ印刷されません。あなたがまだ助けてくれるなら、それはすばらしいことでしょう。おそらくそれを見てみることができるなら、私は下に新しいコンポーネントを投稿します。このコメントボックスに投稿するのに十分なスペースがありません。 – hermt2

0

構文エラー:

then((data) => { 
    console.log(data); 
    }) 

((data)=>{}) should be done instead of (data=>{}). 
+0

'stopVideo(){ this.refs.camera.stopCapture({}) .then((データ)=> { console.log(data) }) .catch((err)=> console.log(err)); } '' ' ここに更新された関数がありますが、私はまだ同じエラーを受け取ることができません '未定義の'を読み取ることができません – hermt2

+0

takeVideo()メソッドでコードを更新しましたか?それでも問題が解決しない場合は、コンソールエラースクリーンショットまたはモバイルスクリーンショットを投稿してください。 –

+0

takeVideo()メソッドを更新しました。ここに私が得続けるエラーのイメージがあります [1]:http://i.stack.imgur.com/HIaU9.png – hermt2

0

古いファイルの不運な損失の後に新しいコンポーネント:

class VideoCamera extends Component { 
    constructor() { 
    super() 
    this.state = { 
     captureMode: Camera.constants.CaptureMode.video, 
     captureAudio: false, 
     captureTarget: Camera.constants.CaptureTarget.cameraRoll, 
    } 
    } 
    render() { 
    return (
     <View style={styles.container}> 
     <Camera 
      aspect={Camera.constants.Aspect.fill} 
      captureAudio={this.state.captureAudio} 
      captureMode={this.state.captureMode} 
      captureTarget={this.state.captureTarget} 
      ref="camera" 
      style={styles.preview} 
     > 
     <TouchableHighlight 
      onPressIn={this._startRecord.bind(this)} 
      onPressOut={this._endVideo.bind(this)} 
     > 
     <Icon 
      name={'video-camera'} 
      size={40} 
      style={styles.recordButton} 
     /> 
      </TouchableHighlight> 
      </Camera> 
     </View> 
     ) 
     } 

    _startRecord() { 
    startVideo = setTimeout(this._recordVideo.bind(this), 50) 
    } 

    _recordVideo() { 
    this.refs.camera.capture({}) 
     .then((data) => console.log(data)) 
     .catch((err) => console.log(err)) 
    } 

    _endVideo() { 
    this.refs.camera.stopCapture() 
    } 

} 
関連する問題