このプロジェクトについて
NeriPlayer はネイティブ Android オーディオプレーヤーで、Jetpack Compose と Media3 で構築され、Android 9(API 28)以上のデバイスをサポートします。プロジェクトの位置づけは「マルチソース探索、オンライン再生、ローカル制御可能、データ自己保持」であり、公共のクラウド楽曲ライブラリやメディア配信サービスは提供せず、オンライン機能はユーザーのサードパーティプラットフォームでのアカウント認可に依存します。
主な機能は以下のとおりです。
- マルチソースオンライン再生:NetEase Cloud Music、Bilibili、YouTube Music を統合し、検索、プレイリスト、お気に入り、アルバム、アーティスト詳細などの入口をサポートし、音源解析、キュー管理、失敗時の復旧を提供します。NetEase Cloud で権限がない場合や試聴のみ返される場合は音質の段階的低下を試み、設定に応じて Bilibili またはローカル音声で補完します。
- ローカル優先データ:再生キャッシュ、ダウンロードファイル、プレイリスト、履歴、再生統計、設定はデフォルトでデバイスローカルに保存されます。プラットフォームの Cookie、GitHub Token、WebDAV パスワードなどは Android Keystore と EncryptedSharedPreferences で暗号化して保存されます。
- オプションの自己ホスト同期:ローカルのプレイリスト、お気に入り、最近の再生、再生統計などのメタデータをユーザー自身の GitHub リポジトリまたは WebDAV リモートファイルに同期できます。WorkManager で遅延・定期同期を行い、3-way merge で競合を処理します。
- 歌詞体験:行単位、単語/文字単位の LRC、YRC/TTML 歌詞のハイライト、翻訳、音訳、オフセット、クリックジャンプ、長押し共有、歌詞カード生成をサポートします。歌詞エディターを提供し、LRCLIB などの外部ソースに接続でき、フローティング歌詞、ステータスバー歌詞、SuperLyric、Lyricon、Bluetooth 歌詞出力をサポートします。
- 再生と音響効果:Media3 ExoPlayer ベースで、速度変更、ピッチ、イコライザー、ラウドネスエンハンスメント、フェードイン/アウト、クロスフェード、Bluetooth 切断時の一時停止、オーディオフォーカスポリシー、UAC1.0 および互換 UAC2.0 Type I PCM デバイス向けの USB 排他再生をサポートします。
- ダウンロードとローカル管理:アプリ内ダウンロードはマルチプラットフォーム音声、タスク進捗、キャンセル/再試行、再開可能ダウンロード(直接 HTTP、チャンク Range、HLS を個別に処理)をサポートし、デフォルト同時実行数 6、最大 8。SAF カスタムダウンロードディレクトリとファイル名テンプレートをサポート。ローカル音声は外部共有、デバイススキャン、または許可されたフォルダスキャンでインポートでき、近くの歌詞とカバーファイルを認識します。
- 一緒に聴く:Cloudflare Workers と Durable Objects を通じて、ルーム、ロール、キュー、再生状態、ループ/シャッフルモードの同期を提供し、招待リンク、ディープリンク参加、カスタムサーバー、ホストオフライン復旧をサポートします。
- 診断と復旧:セーフモード、クラッシュログ、ANR 記録、開発者モードのデバッグプローブ、ストレージ使用量のグループ別統計と再生成可能なキャッシュのクリーンアップを提供します。
プロジェクトは単一 Activity + Compose アーキテクチャを採用し、メイン画面は NavHost と動的ボトムバーで構成され、再生ページはオーバーレイ型フルスクリーンレイヤーで Mini Player が常駐します。リポジトリには設定項目の KSP 自動登録、歌詞解析と UI サブモジュール、一緒に聴くサービス側サブモジュールなどが含まれます。プロジェクトは学習と研究のみを目的としており、メディアコンテンツ、キー、プラットフォーム制限を回避する手段は提供しません。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.