Skip to content

Commit 17cf2f5

Browse files
Makin music player
1 parent a35c87b commit 17cf2f5

File tree

16 files changed

+208
-33
lines changed

16 files changed

+208
-33
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"java.configuration.updateBuildConfiguration": "interactive"
3+
}

App.tsx

Lines changed: 0 additions & 25 deletions
This file was deleted.

__tests__/App.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'react-native';
66
import React from 'react';
7-
import App from '../App';
7+
import App from '../src/App';
88

99
// Note: import explicitly to use the types shipped with jest.
1010
import {it} from '@jest/globals';

android/app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,4 @@ dependencies {
116116
}
117117

118118
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
119+
apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle")

index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
/**
22
* @format
33
*/
4-
4+
import TrackPlayer from 'react-native-track-player';
55
import {AppRegistry} from 'react-native';
6-
import App from './App';
6+
import App from './src/App';
77
import {name as appName} from './app.json';
8+
import { playbackService } from './musicPlayerService';
89

910
AppRegistry.registerComponent(appName, () => App);
11+
TrackPlayer.registerPlaybackService(() => playbackService);

musicPlayerService.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import TrackPlayer, { RepeatMode } from "react-native-track-player";
2+
3+
import { playListData } from "./src/constants";
4+
5+
export async function setupPlayer(){
6+
let isSetup = false;
7+
try {
8+
await TrackPlayer.getActiveTrackIndex()
9+
isSetup = true;
10+
} catch (error) {
11+
await TrackPlayer.setupPlayer()
12+
isSetup = true;
13+
} finally {
14+
return isSetup;
15+
}
16+
17+
}
18+
19+
export async function addTrack(){
20+
await TrackPlayer.add(playListData)
21+
await TrackPlayer.setRepeatMode(RepeatMode.Queue)
22+
}
23+
24+
25+
export async function playbackService (){
26+
TrackPlayer.addEventListener(Event.RemotePause, ()=>{
27+
TrackPlayer.pause()
28+
})
29+
30+
TrackPlayer.addEventListener(Event.RemotePlay, ()=>{
31+
TrackPlayer.play()
32+
})
33+
34+
TrackPlayer.addEventListener(Event.RemoteNext, ()=>{
35+
TrackPlayer.skipToNext()
36+
})
37+
38+
TrackPlayer.addEventListener(Event.RemotePrevious, ()=>{
39+
TrackPlayer.skipToPrevious()
40+
})
41+
42+
}

package-lock.json

Lines changed: 53 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"dependencies": {
1313
"react": "18.2.0",
1414
"react-native": "0.74.3",
15-
"react-native-track-player": "^4.1.1"
15+
"react-native-track-player": "^4.1.1",
16+
"react-native-vector-icons": "^10.1.0"
1617
},
1718
"devDependencies": {
1819
"@babel/core": "^7.20.0",

src/App.tsx

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import React, {useState, useEffect} from 'react';
2+
3+
import {
4+
ActivityIndicator,
5+
SafeAreaView,
6+
StatusBar,
7+
StyleSheet,
8+
Text,
9+
} from 'react-native';
10+
11+
import {setupPlayer, addTrack} from '../musicPlayerService';
12+
13+
function App(): React.JSX.Element {
14+
const [isPlayerReady, setIsPlayerReady] = useState(false);
15+
16+
async function setup() {
17+
let isSetup = await setupPlayer();
18+
19+
if (isSetup) {
20+
await addTrack();
21+
}
22+
23+
setIsPlayerReady(isSetup);
24+
}
25+
26+
useEffect(() => {
27+
setup();
28+
}, []);
29+
30+
if (!isPlayerReady) {
31+
return (
32+
<SafeAreaView>
33+
<ActivityIndicator />
34+
</SafeAreaView>
35+
);
36+
}
37+
38+
return (
39+
<SafeAreaView>
40+
<StatusBar />
41+
<Text>Hello react nativee</Text>
42+
</SafeAreaView>
43+
);
44+
}
45+
46+
const styles = StyleSheet.create({
47+
container: {
48+
flex: 1,
49+
},
50+
});
51+
52+
export default App;

src/assets/audio/five - Copy.mp3

10.5 MB
Binary file not shown.

0 commit comments

Comments
 (0)