React Nativeでサウンドを再生したい。
私は zmxv/react-native-sound でここを読もうとしましたが、私のような初心者として、そのドキュメントはReact Nativeでそれを適用する方法を混乱させますコード。
私が試してみる前に これ イベントでネイティブ再生音を反応させ、次のようなコードを作成します:
import React, { Component } from 'react'
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native'
const Sound = require('react-native-sound')
export default class MovieList extends Component {
handlePress() {
// Play some sound here
let hello = new Sound('motorcycle.mp3', Sound.MAIN_BUNDLE, (error) => {
if (error) {
console.log(error)
}
})
hello.play((success) => {
if (!success) {
console.log('Sound did not play')
}
})
}
render() {
const { movie } = this.props
return (
<TouchableOpacity onPress={this.handlePress.bind(this)}>
<View>
<Text>Start</Text>
</View>
</TouchableOpacity>
)
}
}
そして、これは私が私のオーディオを置く場所です:
MyProject/Android/app/src/main/res/raw/motorcycle.mp3
プロジェクトの構造
それで、私のコードの何が問題になっていますか?
これによりサウンドがプリロードされ、再生を押すと再生されます。
export default class MovieList extends Component {
componentDidMount(){
this.hello = new Sound('whoosh.mp3', Sound.MAIN_BUNDLE, (error) => {
if (error) {
console.log('failed to load the sound', error);
return;
}
});
}
handlePress() {
this.hello.play((success) => {
if (!success) {
console.log('Sound did not play')
}
})
}
render() {
const { movie } = this.props
return (
<TouchableOpacity onPress={this.handlePress.bind(this)}>
<View>
<Text>Start</Text>
</View>
</TouchableOpacity>
)
}
}
この質問に答えてくれた人に感謝しますが、私はこの簡単な質問でこれを解決しました:
import React, { Component } from 'react'
import { Text, View, TouchableOpacity } from 'react-native'
import Sound from 'react-native-sound';
export default class MovieList extends Component {
sound = new Sound('motorcycle.mp3');
playSound = () => {
this.sound.play()
}
render() {
return (
<View>
<TouchableOpacity onPress={this.playSound}>
<View>
<Text>Start</Text>
</View>
</TouchableOpacity>
</View>
)
}
}
サウンドを再生するには、次のコードを試してください。
setTimeout(() => {
var sound = new Sound("motorcycle.mp3",Sound.MAIN_BUNDLE, (error) => {
/* ... */
});
setTimeout(() => {
sound.play((success) => {
/* ... */
});
}, 100);
}, 100);
それはハッキーで、 https://github.com/zmxv/react-native-sound/issues/89#issuecomment-276678935 によって解決されます
IOSで私にとってうまくいったのは次のとおりです。
npm run ios
からネイティブアプリケーションをコンパイルする必要があります。これは私のコードです:
const sound = new Sound(
"myFile.mp3",
Sound.MAIN_BUNDLE,
error => {
if (error) {
console.log("failed to load the sound", error);
return;
}
sound.play(() => sound.release());
}
);
// The play dispatcher
sound.play();