Topik ini menjelaskan API utama AliPlayerKit, mencakup API inti, sistem slot, sumber video, antarmuka pemutar, penyimpanan status, sistem event, sistem logging, antarmuka preload, kebijakan siklus hidup, dan sistem strategi.
AliPlayerKit menyediakan komentar kode lengkap untuk semua API inti—termasuk kelas dan metode. Di IDE seperti Android Studio, Anda dapat melihat komentar tersebut melalui fitur hover tips atau Quick Documentation guna meningkatkan efisiensi pengembangan. Komentar ini juga memudahkan alat pemrograman berbasis AI dalam memahami semantik API.
API Inti
AliPlayerKit (Antarmuka Global)
Kelas AliPlayerKit menyediakan konfigurasi global dan inisialisasi, serta merupakan satu-satunya titik masuk global untuk seluruh framework pemutar.
Metode Inisialisasi
Metode | Parameter | Nilai kembali | Deskripsi |
| context: konteks aplikasi | void | Inisialisasi pengaturan global. Panggil metode ini di Application.onCreate(). |
Kueri Status
Metode | Parameter | Nilai kembali | Deskripsi |
| - | boolean | Periksa apakah inisialisasi telah selesai. |
| - | Context | Ambil konteks aplikasi. |
| - | String | Ambil nomor versi Kit. |
| - | String | Ambil nomor versi SDK dasar. |
| - | String | Ambil ID perangkat. |
Metode Konfigurasi
Metode | Parameter | Nilai kembali | Deskripsi |
| enable: Menentukan apakah fitur diaktifkan. | void | Aktifkan atau nonaktifkan mode debug. |
| - | boolean | Periksa apakah mode debug diaktifkan. |
| enable: setel ke true untuk mengaktifkan | void | Tampilkan atau sembunyikan panel log. |
| - | boolean | Periksa apakah panel log diaktifkan. |
| disable: Menentukan apakah fitur dinonaktifkan. | void | Aktifkan atau nonaktifkan tangkapan layar. |
| - | boolean | Periksa apakah tangkapan layar dinonaktifkan. |
| viewType: tipe tampilan | void | Atur tipe tampilan pemutar. |
| - | PlayerViewType | Ambil tipe tampilan pemutar saat ini. |
Manajemen cache
Metode | Parameter | Nilai kembali | Deskripsi |
| - | void | Bersihkan cache pemutar. |
Global API
Metode | Parameter | Nilai kembali | Deskripsi |
| - | IPlayerLogger | Ambil instance logger global. |
| - | IPlayerPreloader | Ambil instance preloader global. |
| logger: instance logger | void | Atur implementasi logger kustom. |
| preloader: instance preloader | void | Atur implementasi preloader kustom. |
AliPlayerView (Komponen Tampilan)
Kelas AliPlayerView adalah komponen tampilan pemutar inti yang menangani rendering UI dan manajemen slot. Sebagai lapisan View dalam arsitektur MVC, komponen ini merender antarmuka pemutar dan mengelola komponen UI terkait.
Controller binding
Metode | Parameter | Nilai kembali | Deskripsi |
| controller, model | void | Ikat controller dan data menggunakan UI bawaan. |
| controller, model, registry | void | Mengikat controller dan data menggunakan UI kustom. |
| - | void | Lepaskan ikatan dan bebaskan resource. |
Siklus Hidup
Metode | Parameter | Nilai kembali | Deskripsi |
| lifecycleOwner | boolean | Mengikat siklus hidup. |
Metode Lainnya
Metode | Parameter | Nilai kembali | Deskripsi |
| - | boolean | Menangani penekanan tombol back. Mengembalikan true jika ditangani. |
| - | ISlotManager | Ambil manajer slot. |
AliPlayerController (Controller)
Kelas AliPlayerController mengontrol logika pemutaran dan manajemen status. Sebagai lapisan Controller dalam arsitektur MVC, kelas ini mengkoordinasikan interaksi antara lapisan View dan Model.
Konstruktor
Metode | Parameter | Deskripsi |
| context: konteks aplikasi | Membuat controller menggunakan kebijakan siklus hidup default. |
| context, lifecycleStrategy | Membuat controller menggunakan kebijakan siklus hidup kustom. |
Konfigurasi dan inisialisasi
Metode | Parameter | Nilai kembali | Deskripsi |
| model: data pemutaran | void | Konfigurasikan data pemutaran. |
| - | AliPlayerModel | Ambil konfigurasi data pemutaran saat ini. |
| - | IMediaPlayer | Ambil instance pemutar. |
| - | void | Hancurkan pemain. |
Manajemen state
Metode | Parameter | Nilai kembali | Deskripsi |
| - | IPlayerStateStore | Ambil penyimpanan status pemutar. |
| - | StrategyManager | Ambil manajer strategi. |
Pengaturan tampilan
Metode | Parameter | Nilai kembali | Deskripsi |
| displayView | void | Atur tampilan display. |
| surface | void | Atur Surface. |
| - | void | Beritahu bahwa Surface telah berubah. |
Metode siklus hidup
Metode | Parameter | Nilai kembali | Deskripsi |
| - | void | Secara manual melanjutkan pemutaran di luar konteks LifecycleOwner. |
| - | void | Secara manual menjeda pemutaran di luar konteks LifecycleOwner. |
AliPlayerModel (Model Data)
Kelas AliPlayerModel mengenkapsulasi data konfigurasi pemutaran. Sebagai lapisan Model dalam arsitektur MVC, kelas ini menyimpan seluruh data konfigurasi yang diperlukan oleh pemutar. Gunakan pola Builder untuk membuat instance-nya.
Metode Builder
Metode | Parameter | Deskripsi |
| objek sumber video | Atur sumber video. Wajib diisi. |
| tipe scene | Atur tipe scene pemutaran. |
| URL gambar mini | Atur URL gambar mini. |
| judul video | Atur judul video. |
| Autoplay | Atur apakah autoplay diaktifkan. |
| ID jejak | Atur ID trace. |
| posisi awal | Atur posisi awal dalam milidetik. |
| Apakah decoding hardware diaktifkan? | Atur apakah decoding hardware diaktifkan. |
| Apakah hibernasi didukung? | Atur apakah tidur layar diizinkan. |
| - | Membangun instance AliPlayerModel. |
Akses properti
Metode | Nilai kembali | Deskripsi |
| VideoSource | Ambil objek sumber video. |
| int | Ambil tipe scene pemutaran. |
| String | Ambil URL gambar mini. |
| String | Ambil judul video. |
| boolean | Ambil status autoplay. |
| String | Ambil ID trace. |
| long | Ambil posisi awal. |
| boolean | Memeriksa apakah decoding perangkat keras diaktifkan. |
| boolean | Ambil status izin tidur layar. |
Sistem Slot
Sistem slot adalah mekanisme ekstensi UI AliPlayerKit yang memungkinkan penyesuaian komponen UI individual pada pemutar.
ISlotManager (Antarmuka Manajemen Slot)
Antarmuka ISlotManager menyediakan kemampuan manajemen slot dan dapat diakses melalui AliPlayerView.getSlotManager().
Metode
Parameter
Nilai kembali
Deskripsi
rebuildSlots()-
void
Membangun ulang semua slot setelah memodifikasi SlotRegistry.
getSlotView(SlotType)slotType: tipe slot
View
Ambil tampilan slot untuk tipe tertentu.
bindData(AliPlayerModel)model: data pemutaran
void
Mengikat data pemutaran ke sistem slot.
unbindData()-
void
Melepaskan ikatan data pemutaran.
updateSceneType(int)sceneType: tipe scene
void
Memperbarui tipe scene dan membangun ulang slot.
SlotRegistry (Registri Slot)
Kelas SlotRegistry mendaftarkan slot kustom dan dimasukkan ke dalam AliPlayerView.attach().
Metode pendaftaran
Metode | Parameter | Deskripsi |
| type, builder | Mendaftarkan builder slot. |
| type, slotClass | Mendaftarkan kelas slot. Kelas dibuat menggunakan refleksi. |
| type, layoutId | Mendaftarkan resource layout sebagai slot. |
Metode manajemen
Metode | Nilai kembali | Deskripsi |
| SlotBuilder | Membatalkan pendaftaran builder slot. |
| boolean | Anda dapat memeriksa apakah sudah terdaftar. |
| void | Menghapus semua pendaftaran. |
| int | Ambil jumlah slot yang terdaftar. |
ISlot (Antarmuka Slot)
Slot kustom harus mengimplementasikan antarmuka ISlot untuk mendefinisikan siklus hidupnya.
Metode | Deskripsi |
| Dipanggil ketika slot dilampirkan ke host-nya. |
| Dipanggil ketika slot dilepaskan dari host-nya. |
| Dipanggil ketika data pemutaran diikat. |
| Dipanggil ketika data pemutaran dilepaskan. |
Kami merekomendasikan untuk memperluas BaseSlot saat mengimplementasikan slot kustom. Framework secara otomatis mengelola siklus hidup langganan event.
Tipe Slot (SlotType)
Konstanta | Deskripsi |
| Slot tampilan permukaan pemutar: tampilan inti yang digunakan untuk merender konten video. |
| Slot manajemen fullscreen: mengelola logika toggle fullscreen. |
| Slot kontrol gesture: menangani kontrol gesture seperti tap, double-tap, long press, dan drag. |
| Slot petunjuk tampilan landscape: memberi petunjuk kepada pengguna untuk menonton video landscape dalam mode fullscreen. |
| Slot gambar sampul: menampilkan gambar sampul video. |
| Slot tampilan tengah: menampilkan informasi status di area tengah, seperti kecepatan pemutaran, kecerahan, dan volume. |
| Slot status pemutaran: menampilkan informasi status pemutaran seperti pesan error dan indikator loading. |
| Slot panel log: menampilkan informasi log pemutar untuk debugging. |
| Slot bilah kontrol atas: menampilkan tombol kembali, judul, dan pengaturan. |
| Slot bilah kontrol bawah: menampilkan kontrol pemutaran, bilah progres, dan toggle fullscreen. |
| Slot menu pengaturan: menampilkan menu pengaturan, termasuk kecepatan pemutaran, definisi, mirror, dan opsi rotasi. |
SceneType (Scene Pemutaran)
Konstanta | Nilai | Deskripsi |
| 0 | Scene video-on-demand: pemutaran video standar dengan kontrol pemutaran lengkap. |
| 1 | Scene streaming langsung: pemutaran stream real-time tanpa pencarian atau kontrol kecepatan. |
| 2 | Scene daftar video: pemutar yang digunakan dalam daftar video. Menonaktifkan gesture vertikal. |
| 3 | Scene pemutaran terbatas: membatasi operasi timeline. Digunakan dalam pendidikan dan pelatihan. |
| 4 | Scene pemutaran minimal: hanya menampilkan tampilan pemutaran tanpa elemen UI. |
PlayerViewType (Tipe Tampilan Pemutar)
Konstanta | Deskripsi |
| AliDisplayView (direkomendasikan): komponen tampilan resmi dengan kompatibilitas dan performa lebih baik. |
| SurfaceView: menggunakan thread rendering terpisah tetapi tidak mendukung animasi. |
| TextureView: mendukung animasi dan transformasi. Terbaik untuk scene yang membutuhkan animasi tampilan. |
Sumber Video
VideoSourceFactory (Pabrik Sumber Video)
Metode | Parameter | Nilai kembali | Deskripsi |
| vid, playAuth | VideoSource | Membuat sumber video VidAuth (direkomendasikan). |
| vid, accessKeyId, accessKeySecret, securityToken, region | VideoSource | Membuat sumber video VidSts. |
| url: URL video | VideoSource | Membuat sumber video URL. |
Di lingkungan produksi, gunakan metode VidAuth karena menawarkan keamanan lebih tinggi dan terintegrasi dengan layanan VOD Alibaba Cloud untuk kemampuan pemutaran yang ditingkatkan. Untuk informasi lebih lanjut, lihat Dukungan sumber video ganda.
VideoSource (Sumber Video)
Metode | Nilai kembali | Deskripsi |
| boolean | Periksa apakah sumber video valid. |
| int | Ambil tipe sumber video. |
| String | Ambil ID sumber video. |
Antarmuka Pemutar
IMediaPlayer (Antarmuka Media Player)
Antarmuka IMediaPlayer mendefinisikan operasi pemutar inti dan dapat diakses melalui AliPlayerController.getPlayer().
Kontrol pemutaran
Metode | Parameter | Deskripsi |
| - | Memulai pemutaran. |
| - | Menjeda pemutaran. |
| - | Beralih antara memutar dan menjeda. |
| - | Menghentikan pemutaran. |
| - | Memutar ulang video. |
| positionMs | Mencari ke posisi tertentu dalam milidetik. |
| - | Melepaskan resource pemutar. |
Sumber data
Metode | Parameter | Deskripsi |
| model | Atur sumber data video. |
Pengaturan tampilan
Metode | Parameter | Deskripsi |
| displayView | Atur tampilan display. |
| surface | Atur Surface rendering. |
| - | Beritahu bahwa Surface telah berubah. |
Pengaturan pemutaran
Metode | Parameter | Deskripsi |
| speed | Atur kecepatan pemutaran (0,3 hingga 3,0). |
| loop | Aktifkan atau nonaktifkan looping. |
| mute | Bisukan. |
| scaleType | Atur mode pengisian rendering. |
| mirrorType | Atur mode mirror. |
| rotation | Atur sudut rotasi. |
| trackQuality | Pilih definisi video. |
| - | Mengambil tangkapan layar. |
Kueri status
Metode | Nilai kembali | Deskripsi |
| String | Ambil identifier unik pemutar. |
| IPlayerStateStore | Ambil antarmuka penyimpanan status. |
ScaleType (Mode Pengisian Rendering)
Konstanta | Nilai | Deskripsi |
| 0 | Meregangkan untuk mengisi tampilan. |
| 1 | Menyesuaikan sambil mempertahankan rasio aspek (mungkin menampilkan batang hitam). |
| 2 | Memotong untuk mengisi sambil mempertahankan rasio aspek. |
MirrorType (Mode Mirror)
Konstanta | Nilai | Deskripsi |
| 0 | Tidak ada mirror. |
| 1 | Mirror horizontal. |
| 2 | Mirror vertikal. |
Rotation (Sudut Rotasi)
Konstanta | Nilai | Deskripsi |
| 0 | 0 derajat. |
| 90 | 90 derajat. |
| 180 | 180 derajat. |
| 270 | 270 derajat. |
Antarmuka Penyimpanan Status
IPlayerStateStore (Penyimpanan Status Pemutar)
Antarmuka IPlayerStateStore menyediakan akses read-only ke status pemutar dan dapat diakses melalui AliPlayerController.getStateStore() atau IMediaPlayer.getStateStore().
Status pemutaran
Metode | Nilai kembali | Deskripsi |
| PlayerState | Ambil status pemutaran saat ini. |
| long | Ambil durasi video total dalam milidetik. |
| long | Ambil posisi pemutaran saat ini dalam milidetik. |
| float | Ambil kecepatan pemutaran saat ini. |
Pengaturan video
Metode | Nilai kembali | Deskripsi |
| VideoSize | Ambil ukuran video (mungkin null). |
| int | Ambil sudut rotasi saat ini. |
| int | Ambil mode pengisian saat ini. |
| int | Ambil mode mirror saat ini. |
Pengaturan pemutaran
Metode | Nilai kembali | Deskripsi |
| boolean | Periksa apakah looping diaktifkan. |
| boolean | Periksa apakah audio dibisukan. |
| boolean | Periksa apakah pemutar dalam mode fullscreen. |
Definisi
Metode | Nilai kembali | Deskripsi |
| List | Ambil daftar definisi yang tersedia. |
| int | Ambil indeks definisi saat ini. |
PlayerState (Status Pemutaran)
Konstanta | Deskripsi |
| Status tidak diketahui: status pemutar tidak diketahui atau belum diinisialisasi. |
| Status idle: pemutar telah dibuat tetapi belum diinisialisasi, atau resource telah dilepaskan. |
| Menginisialisasi: pemutar sedang menginisialisasi dan mempersiapkan untuk memuat resource video. |
| Terinisialisasi: pemutar telah sepenuhnya diinisialisasi tetapi belum siap diputar. |
| Mempersiapkan: pemutar sedang mempersiapkan resource video dan menguraikan informasi video. |
| Siap: pemutar siap untuk memulai pemutaran. |
| Memutar: pemutar sedang aktif memutar video. |
| Dijeda: pemutar dijeda. |
| Selesai: pemutaran video telah selesai. |
| Dihentikan: pemutar dihentikan. |
| Error: terjadi kesalahan selama pemutaran. |
Sistem Event
PlayerEventBus (Event Bus)
Kelas PlayerEventBus merupakan event bus global untuk menerbitkan dan berlangganan event pemutar.
Metode berlangganan
Metode | Parameter | Deskripsi |
| eventType, listener | Berlangganan event dengan tipe tertentu. |
| eventType, listener | Berhenti berlangganan event dengan tipe tertentu. |
| listener | Berhenti berlangganan listener dari semua tipe event. |
| - | Menghapus semua langganan. Gunakan dengan hati-hati. |
Metode penerbitan
Metode | Parameter | Deskripsi |
| event | Menerbitkan event. |
Metode kueri
Metode | Nilai kembali | Deskripsi |
| int | Ambil jumlah subscriber untuk tipe event tertentu. |
| boolean | Periksa apakah ada subscriber untuk tipe event tertentu. |
PlayerCommand (Perintah Pemutar)
Perintah pemutar mengontrol perilaku pemutar dan diterbitkan menggunakan PlayerEventBus.post().
Kelas perintah | Parameter | Deskripsi |
| playerId | Perintah putar. |
| playerId | Perintah jeda. |
| playerId | Beralih antara memutar dan menjeda. |
| playerId | Perintah hentikan. |
| playerId | Perintah putar ulang. |
| playerId, position | Perintah cari. Posisi dalam milidetik. |
| playerId, speed | Atur kecepatan pemutaran (0,3 hingga 3,0). |
| playerId | Perintah tangkapan layar. |
| playerId, loop | Atur looping. |
| playerId, mute | Atur bisu. |
| playerId, scaleType | Atur mode pengisian rendering. |
| playerId, mirrorType | Atur mode mirror. |
| playerId, rotation | Atur sudut rotasi. |
| playerId, trackQuality | Anda dapat mengganti resolusi. |
Contoh penggunaan
// Terbitkan perintah putar.
PlayerEventBus.getInstance().post(new PlayerCommand.Play(playerId));
// Terbitkan perintah cari.
PlayerEventBus.getInstance().post(new PlayerCommand.Seek(playerId, 5000));
// Atur kecepatan pemutaran.
PlayerEventBus.getInstance().post(new PlayerCommand.SetSpeed(playerId, 1.5f)); PlayerEvents (Event Pemutar)
Perubahan status pemutar diterbitkan sebagai event. Berlangganan untuk mendengarkannya.
Kelas event | Properti | Deskripsi |
| oldState, newState | Status pemutaran berubah. |
| duration | Pemutar siap. |
| - | Frame pertama dirender. |
| width, height | Ukuran video berubah. |
| duration, currentPosition, bufferedPosition | Informasi pemutaran diperbarui. |
| errorCode, errorMsg | Event error. |
| - | Loading dimulai. |
| percent, netSpeed | Progres loading. |
| - | Loading selesai. |
| speed | Setel kecepatan selesai. |
| result, snapshotPath, width, height | Tangkapan layar selesai. |
| loop | Setel loop selesai. |
| mute | Setel bisu selesai. |
| scaleType | Setel mode pengisian selesai. |
| mirrorType | Pengaturan pencerminan telah selesai. |
| rotation | Setel rotasi selesai. |
| trackQualityList | Daftar definisi diperbarui. |
| trackIndex | Pemilihan definisi selesai. |
Contoh penggunaan
// Berlangganan event pemutaran.
PlayerEventBus.getInstance().subscribe(PlayerEvents.Prepared.class, event -> {
long duration = event.duration; // Durasi total video
});
// Berlangganan event error.
PlayerEventBus.getInstance().subscribe(PlayerEvents.Error.class, event -> {
int code = event.errorCode;
String msg = event.errorMsg;
}); Sistem Logging
IPlayerLogger (Antarmuka Logging)
Antarmuka IPlayerLogger menyediakan konfigurasi logging global dan dapat diakses melalui AliPlayerKit.getLogger().
Metode | Parameter | Nilai kembali | Deskripsi |
| enable | void | Aktifkan atau nonaktifkan logging konsol. |
| - | boolean | Periksa apakah logging konsol diaktifkan. |
| level | void | Atur tingkat log. |
| - | int | Ambil tingkat log saat ini. |
| callback | void | Atur listener callback log. |
LogLevel (Tingkat Log)
Konstanta | Nilai | Deskripsi |
| 0 | Tingkat paling detail. Mencatat semua informasi debug. |
| 1 | Tingkat debug. |
| 2 | Tingkat informasi. |
| 3 | Tingkat peringatan. |
| 4 | Tingkat error. |
| 100 | Nonaktifkan semua log. |
Antarmuka Preload
IPlayerPreloader (Antarmuka Preload)
Antarmuka IPlayerPreloader menyediakan manajemen preload global dan dapat diakses melalui AliPlayerKit.getPreloader().
Metode | Parameter | Nilai kembali | Deskripsi |
| task, listener | String | Tambahkan tugas preload dan kembalikan ID-nya. |
| taskId | void | Membatalkan tugas tertentu. |
| taskId | void | Menjeda tugas tertentu. |
| taskId | void | Melanjutkan tugas tertentu. |
PreloadCallback (Callback Preload)
Metode | Parameter | Deskripsi |
| taskId, source | Preload selesai. |
| taskId, source, code, message | Error preload. |
| taskId, source | Preload dibatalkan. |
Kebijakan Siklus Hidup Pemutar
IPlayerLifecycleStrategy (Antarmuka Kebijakan Siklus Hidup Pemutar)
Antarmuka IPlayerLifecycleStrategy mendefinisikan cara instance pemutar dikelola sepanjang siklus hidupnya guna mengoptimalkan pembuatan dan penggunaan ulang instance tersebut.
Metode | Parameter | Nilai kembali | Deskripsi |
| factory | void | Inisialisasi kebijakan. |
| context, uniqueId | IMediaPlayer | Ambil instance pemutar. |
| player, uniqueId, force | void | Mendaur ulang instance pemutar. |
| - | void | Bersihkan semua resource. |
| context, count | void | Pramuat instance player. |
Kebijakan bawaan
Kelas kebijakan | Deskripsi |
| Kebijakan default: membuat instance baru setiap kali dan menghancurkannya segera setelah digunakan. |
| Kebijakan pool penggunaan ulang: terbaik untuk daftar streaming video. |
| Kebijakan berbasis ID: mengikat satu instance ke satu ID. |
| Kebijakan singleton: hanya satu instance global. |
Untuk informasi lebih lanjut, lihat Kebijakan siklus hidup pemutar.
Sistem Strategi
StrategyManager (Manajer Strategi)
Kelas StrategyManager mengelola siklus hidup semua strategi dan dapat diakses melalui AliPlayerController.getStrategyManager().
Metode | Parameter | Nilai kembali | Deskripsi |
| strategy | void | Mendaftarkan strategi. |
| strategy | void | Batalkan Pendaftaran Kebijakan |
| name | IStrategy | Ambil strategi berdasarkan nama. |
| context | void | Memulai semua strategi. |
| - | void | Menghentikan semua strategi. |
| - | void | Mereset semua strategi. |
| context | void | Memperbarui konteks dan memulai ulang strategi. |
| - | void | Hapus Manajer |
| - | int | Ambil jumlah strategi yang terdaftar. |
| - | boolean | Anda dapat memeriksa apakah sudah dimulai. |
IStrategy (Antarmuka Strategi)
Metode | Deskripsi |
| Ambil nama strategi. |
| Dipanggil ketika strategi dimulai. |
| Dipanggil ketika strategi dihentikan. |
| Dipanggil ketika strategi direset. |