react-native-audio-streaming
Features
- Background audio streaming of remote stream
- Control via sticky notification on android and media center on iOS
- Shoutcast/Icy meta data support
- Simple UI player component (if needed, an api to control the sound is available)
Getting started
$ npm install react-native-audio-streaming --save
Mostly automatic installation
$ react-native link react-native-audio-streaming
Go to node_modules
➜ react-native-audio-streaming
=> ios
and add Pods.xcodeproj
In XCode, in the project navigator, select your project. Add libReactNativeAudioStreaming.a
and libStreamingKit.a
to your project's Build Phases
➜ Link Binary With Libraries
Manual installation
iOS
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-audio-streaming
=>ios
- run
pod install
to download StreamingKit dependency - add
ReactNativeAudioStreaming.xcodeproj
- add
Pods.xcodeproj
- run
- In XCode, in the project navigator, select your project. Add
libReactNativeAudioStreaming.a
andlibStreamingKit.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)
Android
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.reactlibrary.ReactNativeAudioStreamingPackage;
to the imports at the top of the file - Add
new ReactNativeAudioStreamingPackage(MainActivity.class)
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-audio-streaming' project(':react-native-audio-streaming').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-audio-streaming/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-audio-streaming')
Usage
Playing sound (similar code used by the player UI)
import { ReactNativeAudioStreamingModule } from 'react-native-audio-streaming';
const url = "http://lacavewebradio.chickenkiller.com:8000/stream.mp3";
ReactNativeAudioStreamingModule.pause();
ReactNativeAudioStreamingModule.resume();
ReactNativeAudioStreamingModule.play(url);
ReactNativeAudioStreamingModule.stop();
For more information see the Example app.
Player UI
import { Player } from 'react-native-audio-streaming';
class PlayerUI extends Component {
render() {
return (
<Player url={"http://lacavewebradio.chickenkiller.com:8000/stream.mp3"} />
);
}
}
TODO
- Allow to specify custom style for the android notification (maybe a custom view ?)
- Allow to specify custom styles for the player
- Handle artwork of artist
- Add tests
Credits
- Android version based on the work of @EstebanFuentealba https://github.com/EstebanFuentealba/react-native-android-audio-streaming-aac
- iOS version based on the work of @jhabdas https://github.com/jhabdas/lumpen-radio