Thư viện react-native-track-player là một thư viện hỗ trợ phát nhạc và video trong ứng dụng viết bằng ReactNative.
Thư viện này cung cấp nhiều phương thức hỗ trợ xử lý điều khiển âm thanh như: play, pause, stop, remove, skip, next, previous, reset…
Để thực hành với thư viện này, bạn hãy thực hành những bước cơ bản nhất trước, sau đó mới nâng cấp dần ứng dụng.
Ứng dụng đầu tiên sẽ là phát một bản nhạc ở một link web với giao diện có một nút play và nút tạm dừng.
Trang tài liệu của thư viện https://rntp.dev/docs/basics/installation
Sau khi bạn tạo project mới, bạn hãy thực hiện các bước dưới đây:
Bước 1: Cài đặt thư viện
npm install --save react-native-track-player
Bước 2: Tạo một file service chạy nhạc
Bạn tạo file là servicePlay.js có hàm playbackService. Hàm này tạm thời để trống, để dùng tên hàm đăng ký sãn với ứng dụng.
import TrackPlayer from 'react-native-track-player';
export async function playbackService() {
// TODO: Attach remote event handlers
}
Bước 3: Mở file index.js để đăng ký hàm playbackService
// Import thư viện
import TrackPlayer from 'react-native-track-player';
import { playbackService } from './servicePlay';
// đăng ký hàm viết ở dưới dòng này: AppRegistry.registerComponent(appName, () => App);
TrackPlayer.registerPlaybackService(() => playbackService);
Bước 4: Sang file App.tsx đăng tạo một hàm cài đặt
Trong component App, bạn tạo hàm setupApp để thiết lập ban đầu:
const setupApp = async ()=>{
console.log("setup player");
// khởi tạo cho player
await TrackPlayer.setupPlayer();
// định nghĩa danh sách track
let listTrack = [
{
id: '1',
url: 'https://cdn.pixabay.com/audio/2022/10/18/audio_31c2730e64.mp3',
title: 'Password Infinity',
artist: '',
}
];
// đưa track vào player
await TrackPlayer.add(listTrack);
console.log("Finish setup");
}
Tiếp theo trong component App, bạn gọi useEffect để kich hoạt setup khi render giao diện
useEffect( () => {
console.log("start render");
setupApp();
}, []);
Vẫn trong component App, bạn viết thêm hàm Play và hàm Pause để nút bấm sử dụng
//--- hàm điều khiển
const PlayMusic = ()=>{
// hàm chạy nhạc
console.log("play music");
TrackPlayer.play();
}
// hàm tạm dừng
const PauseMusic = ()=>{
console.log("pause music");
TrackPlayer.pause();
}
Tiếp theo phần return, bạn viết 2 nút bấm như sau:
return (
<View>
<Text>Demo Music</Text>
<View style={{width: 100,margin: 10}}>
<Button title='Play' onPress={PlayMusic} />
</View>
<View style={{width: 100,margin: 10}}>
<Button title='Pause' onPress={PauseMusic} />
</View>
</View>
)
Bước 5: Khai báo thêm vào mainifest của android
Trong thẻ application bạn thêm thuộc tính usesCleartextTraffic
<application
android:usesCleartextTraffic="true"
Bước 6: Chạy ứng dụng
Chú ý khi thử nghiệm nếu không báo lỗi mà không có âm thanh thì bạn phải kiểm tra tăng giảm âm thanh trên máy ảo, hoặc bạn có thể phải reset lại máy ảo.
Xem code đầy đủ tại https://zezo.dev/view/code-day-du-ung-dung-nghe-nhac-don-gian-trong-reactnative