さらに別のオーディオプレーヤー

こんにちは。 私の名前はヴァディムです。 そして、私は音楽が大好きです。 それは薬のようなものです。 新しい音楽が常に必要です。 そして彼女を見つけて聞くためのツール。 この病気は何年も続いています。 すべては、解析スクリプト、vk.com、およびlast.fmデータベースの作成から始まりました。 その後、プロキシサーバーネットワークとwualaネットワークのgoogleおよびp2p検索パーサー+ last.fmに基づく推奨サービス(w3z.ru-プロジェクトは終了しました)を介したマルチスレッドライブインターネットミュージックパーサーがありました。 次に、last.fmとvk(wharrgarbl.ru-プロジェクトは終了しました)と統合された音楽愛好家のためのソーシャルネットワークが登場しました。 そして最後に、音楽愛好家向けのデスクトップアプリケーションで、単一のインターフェイスで音楽を聴いたり検索したりすることができました(mielophone.com-プロジェクトは終了しました)。 これらすべてのプロジェクトには共通点が1つあります。それらはオープンソースプロジェクトではなく、さまざまな理由で消滅しました。 私は多くの人々 yamalightKaaboeldに助けられ、彼らが閉じなければならないことを二重に悲しみました。 いくつかは著作権者の要求に応じており、いくつかは「引っ張られていない」。 それでは「ベネフィット」を探すのをやめる時が来たのでしょうか? 私は考えて、別の無料の無料のクロスプラットフォームオーディオプレーヤーを作成することにしました。

画像

しかし、見てください、あなたは空白の上にマージします-mp3に圧縮しようとしないでください!

トラックをデコードするためのクールなマルチフォーマットクロスプラットフォームライブラリは、成功の半分です。 そして幸いなことに、 BASS Libraryはフリーウェアプロジェクト用に無料です。 そして、彼女がサポートしているフォーマットの約半分-私も聞いていませんでした。 Cで書かれた高速でコンパクトなクロスプラットフォームの優れたサウンド。 一般に、フリーウェア/オープンソースプロジェクトの門戸がいくつ開いているかを嬉しく思いました。

すべてのファイルは私たちのものです。
(Androidだけでなく)Androidの平均的なプレーヤーには、マルチメディアライブラリを集約するための5つのオプションが含まれます。
アーティスト、アルバム、ジャンル、フォルダーごとにトラックを整理したり、1つのリストにすべてのトラックを表示したりできます。 漫画「パイプまたはピッチャー」を思い出させます。 そこで、森の老人が少女にパイプを渡しました。そうすれば、すべての果実を見ることができます。 たとえば、pandora.comで気に入ったすべてのトラックがvk.comに追加され、デバイスと同期される「My Favorite Tracks」というフォルダーがあるとします。 私のように、このフォルダに数百のトラックがある場合、アーティスト、アルバム、およびジャンルのリストを含む画面は、冗長な情報で大きく過負荷になります。 フォルダナビゲーションは保存されますが、ファイル構造はツリーに似ています。 アルバムのあるフォルダーはアーティストのあるフォルダーにネストできますが、そうでないフォルダーもあります。 複数のフォルダを選択することは不快になり、最終的にはアーティスト-アルバム-年で順序付けされません。 必要なのは、フォルダ並べ替えて、フラットな2レベルツリーとして表示することだけです

Image #2079925, 92.6 KB

フォルダーはアーティストごとにグループ化され、年ごとにソートされています。最後に、最小クリック数で「お気に入りのトラック」フォルダーを選択し、お気に入りのアルバムをいくつか追加できます。これが最近デバイスに追加したミックスです。

なんて痛い、なんて痛い、メディアスキャナー対ユーザー-5:0
トラックライブラリの最初のバージョンは、標準のAndroidメディアライブラリに基づいていました(文字通り100ミリ秒-素晴らしい)。 しかし、最近追加されたトラックセクションにトラックを取得する機能をテストするとき、最近追加されたトラックがないという問題に遭遇しました。 実際には、新しいファイルをデバイスに追加した後、すぐに使用可能になるわけではありません。 まず、ファッショナブルな女の子のように振る舞い、デバイスが再起動した後にのみ起動するメディアスキャナーのサービスを確認する必要があります(また、フリーズし、ビートトラックでバッテリーを放電しますが、今ではそうではありません)。 ファイルシステムスキャナーを作成する必要がありました。 ただし、独自のファイルスキャナーがあるため、独自のタグスキャナーも必要です。 これらの目的のために、 www.jthink.net/jaudiotaggerを選択しました 。 プレーヤーがサポートするすべての形式をサポートし、一見するとかなり高速です。
ファイルあたり70ミリ秒のみ。 私は音楽が好きだと言いましたか? たくさんのファイルがあります。 そして、70ミリ秒は簡単に数分間の憧れに変わります。 Javaでは、コードのほんの数行でarraylistをファイルにドロップできます。また、スキャンするときに、以前にスキャンされていないトラックのみを追加します。 たとえば、更新ボタンで更新を停止します。 ある日、自分のプログラムのトラックのリストを見ていることに気づき、アップロードしたばかりのトラックが表示されない理由を理解できなくなるまで、すべてがすぐに機能し始めました。 更新ボタンを押すのを忘れました。 システムを調べてみると、「新しいファイル」イベントは見つかりませんでしたが、ACTION_POWER_DISCONNECTEDが見つかりました。 購読することで、ユーザーがUSBからコードを引っ張るたびに既にスキャナーを実行できます。 ただし、70ミリ秒は70ミリ秒のままです。 ライブラリをCにねじ込んだところ、70ミリ秒が30ミリ秒になりました。 一見したところ、増加はそれほど重要ではありませんが、1000トラックではそれほど増加していないようです。 そのため、現在のバージョンのスキャナーが誕生しました。

音楽を自由に設定しましょう。

合法化する。 Googleミュージックでは、1か月あたり169ルーブルで音楽を完全に合法的に聴くことができ、さらにメディアライブラリをクラウドに保存できます。 もちろん、私はこの奇跡を乗り越えることができず、サブスクリプションを購入した後、プレーヤーからリポジトリへのアクセスを実装するために急いだものです。 しかし、すべてがうまくいったわけではありません。 Pythonで書かれた素晴らしいUnofficial-Google-Music-APIがありますが、そのJavaポートは絶望的に古くなっています。 より正確には、クラウドから音楽を再生しても問題はないため、ユーザーがアップロードしたトラックは暗号化されません。 ただし、ストアおよびネイティブアプリケーションから入手可能なストアのトラックは暗号化された形式で提供され、アルゴリズムは常に変化しています。 残念ながら、違法なアプリケーションから合法的にユーザーに合法的にアクセス可能なトラックを聞くための合法的な方法はありません。 私はpythonからjavaに書き直すことに少し混乱しましたが、残念ながら何も起こりませんでした。 したがって、自分のトラックのみを聴くことができます。 なんて残念。 ちなみに、私が間違っていなければ、自分のトラックを無料でGoogle Music Cloudにアップロードできます。

パターンとテクスチャ。

dribbble.com全体を数回、すべての方向に破壊します。Voxよりも機能的なものはまだ発明されていないように思えました。 もちろん、設計者にとって奇妙な要件があります。 トラックリストが深さのどこかに、別の画面で隠されているとき、私はそれが本当に好きではなく、代わりに3つのボタンを持つカバーが不思議に表示されます。 そして、何らかの理由で、最新のデザインのほとんどがこの特定のパターンを実装しています。 カバーは、たとえばVoxのように、トラックリストの下に影付きで表示することもできます。 または、本当に美しさを作りたい場合は、openglのアニメーションと「ビジュアルイメージのプラグインモジュール」で美しさを作ります。 さて、あなたは私がどこからインスピレーションを得たかを知っています。 ほとんどのソフトウェアは描かれていますが 、他のプラットフォームへの移植を容易にすることを期待しています。

それはお金ではない

さて、スムーズに移植のトピックに到達しました。 そして、クロスプラットフォーム開発では、私は初心者です。 あなたのように見える側から-多くの技術があり、出力は悲しいです。 WinAmpがかつてあったように、私はアプリケーションがただ良いだけでなく、クールであることを望んでいます。
まず、明らかな解決策に注目しました。
JavaはかさばってJVMを引っ張る
Java Fx-ヘビー

それから彼は革新的だと考えました:
github.com/bigfatbrowncat/zetesは、非常に興味深い珍しいソリューションです。 しかし、これまでのところ若い。 しかし、それは機能します。 (ハブの著者-そして、フレームワークがまだ発表されていないので、私を打ちました)

次に、GUIフレームワーク:
Qt、GTK +、wxWidgets-それぞれに特定の欠点がありました。 一般的に-重いツールのセット。

それから生意気な:
モノはとてつもなくクールなソリューションです。 インターフェイスはネイティブに作成されており、少し重く、簡単に作成できます。 そして私も始めました。 そして、アプリケーションのビジネスロジックの大部分がCで実装されていることを理解して驚いたのですが、各プラットフォーム用のインターフェイスがまだ記述されている場合、なぜモノが必要なのでしょうか? 一般的な部分は悲惨です。

そして再び、私は明らかなソリューションのプール、つまり各プラットフォームのネイティブアプリケーションを検討しました。 これを行う最も簡単な方法は、可能な限りCに転送することです。たとえば、musicbrainzの場合、Cにライブラリがあり、アプリケーションに統合できます。その後、各アプリケーションで、サイレンがけいれんするインターフェイスと文字列のみを実装します。 問題は1つだけです。 Sを学ぶ必要があります。

どうして目の前が見えないの

ここで私は、コミュニティの助けがなければ、それなしではできないことを理解し始めました。 だから今何が:
-アプリケーションのリポジトリAndroidバージョンbitbucket.org/recoilme/freeamp
-実際にはアプリケーションplay.google.com/store/apps/details?id=en.recoilme.freeamp

アプリケーションは次のことができます。
-たくさんの異なるフォーマットをプレイ
-トラックのスキャン、タグの読み取り
-便利な方法でメディアライブラリを提示する
-Gooogle音楽サービスと部分的に統合
-システムリソースの使用を最大化する(バッテリーを消費しない、言い換えれば、この戦いについて話すことを完全に忘れた)

近い将来に予定されている機能:
-musicbrainzおよびlast.fmとの統合。 各アーティスト、スクロブル、カバーの検索、歌詞などに関する最大の情報
-音楽サービスとの統合(vk + soundcloud)
-インターネットラジオ局との統合(実際には、リストを固定し、低音は箱から出してすぐに使用できます)
-あらゆる種類の小さなパズル(飛ぶ! 分解する !): Bitbucket.org/recoilme/freeamp/issues?status=new&status=open
などなど。 このプロジェクトはまだ若く、主に週末に見られます|しかし、私は期待しています

また、私にとってはあまりにも難しい保留中の大きなタスクもあります。
-たとえば、Android用のlibmusicbrainzのビルド
-ビジュアルモジュールを作成し、たとえばロック画面に表示する
-siでメディアスキャナーを書き換える
-まあ、グローバルに、ポピーの下で移植を開始し、次にlinuxの下で、そして他のプラットフォームの下で移植を始めてください。

貢献へようこそ!

アプリケーション:
2H Company-フィリップディック
2H Company-カルチベーター
オーブ-音楽であなたを自由にしましょう
オーブ-地球(ガイア)-パターンとテクスチャ-Trk 2
アルガマン-お金のためではない
感染キノコ-私の前で

Source: https://habr.com/ru/post/J209920/


All Articles