react-native-ringtone-manager-new
v0.1.5
Published
Setting ringtones programatically is not available in iOS unfortunately. iTunes has it's own ringtone store available and there is no public API for setting ringtones. This library is for Android only.
Downloads
9
Readme
react-native-ringtone-manager
iOS Foreword
Setting ringtones programatically is not available in iOS unfortunately. iTunes has it's own ringtone store available and there is no public API for setting ringtones. This library is for Android only.
Getting started
With npm:
$ npm install react-native-ringtone-manager-new --save
Or with yarn:
$ yarn add react-native-ringtone-manager-new
Mostly automatic installation
$ react-native link react-native-ringtone-manager-new
Manual installation
Android
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.reactlibrary.RNRingtoneManagerPackage;
to the imports at the top of the file - Add
new RNRingtoneManagerPackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-ringtone-manager-new' project(':react-native-ringtone-manager-new').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-ringtone-manager-new/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-ringtone-manager-new')
Usage
import { Button } from 'react-native';
import RingtoneManager from 'react-native-ringtone-manager-new';
const App = () => {
async function setRingtone() {
try {
const granted = await RingtoneManager.requestPermissions();
if (granted) {
const options = {
title: 'Select Ringtone',
type: RingtoneManager.TYPE_ALL,
includeSilent: true,
stopPreviousRingtone: true,
};
const uri = await RingtoneManager.getRingtoneUri(options);
if (uri) {
RingtoneManager.setRingtone(
uri,
RingtoneManager.TYPE_ALL,
(value) => {
console.log(value);
},
(err) => {
console.log(err);
}
);
console.log('Ringtone set successfully.');
}
}
} catch (err) {
console.log('Error while setting ringtone:', err);
}
}
return (
<View style={styles.container}>
<Button title="Set Ringtone" onPress={() => setRingtone()} />
</View>
);
};
export default App;
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
});
Note
The API is still under development.
RingtoneManager.getRingtones()
React.useEffect(() => {
RingtoneManager.getRingtones((value) => {
setResult(value);
});
}, []);
Returns a list of Ringtones
RingtoneManager.getRingsByType(RINGTONE_TYPE)
React.useEffect(() => {
RingtoneManager.getRingsByType(RingtoneManager.TYPE_NOTIFICATION, (value) => {
setResult(value);
});
}, []);
Returns a list of Ringtones
of the given type:
RingtoneManager.TYPE_ALL
RingtoneManager.TYPE_RINGTONE
RingtoneManager.TYPE_NOTIFICATION
RingtoneManager.TYPE_ALARM
RingtoneManager.createRingtone(settings)
Sets the system ringtone to the given ringtone. Settings options given below:
| Param | Type | Description |
| ------------ | ------------- | --------------------------------------------------------------------------------- |
| uri | String | The full file path to the ringtone on the file system. |
| title | String | The title of the ringtone. Will appear in the picker with this title. |
| artist | String | The artist of the ringtone. |
| size | Integer | The size of the ringtone file. |
| mimeType | String | The mime type of the ringtone, for example: audio/mp3
|
| duration | Integer | The duration of the ringtone in seconds. |
| ringtoneType | RINGTONE_TYPE | The ringtone type: TYPE_ALL
, TYPE_RINGTONE
, TYPE_NOTIFICATION
, TYPE_ALARM
|
RingtoneManager.pickRingtone()
const pickRingtone = () => {
RingtoneManager.pickRingtone(
RingtoneManager.TYPE_NOTIFICATION,
(value: rederItemProps) => {
console.log(value);
},
(error: any) => {
console.log(error);
}
);
};
Opens the Android ringtone picker.
RingtoneManager.setRingtone()
const setRingtone = () => {
RingtoneManager.setRingtone(
uri,
RingtoneManager.TYPE_ALL,
(value) => {
console.log(value);
},
(err) => {
console.log(err);
}
);
};
set the Ringtone.