Saturday, September 27, 2014

タグの編集画面を追加

簡易的だけどタグの編集画面を追加しました。
タイトル、アルバム、アーティスト、それからアルバムアートの変更ができます。
それ以外については、要望があれば今後追加していくけど、画面に表示されないデータを更新する意味があるのかという気もする。

あと、アルバムアートは、AppEngineを使って画像を収集しているので、あんまりアクセスが多いとやばいかもしれない。
ベータで様子をみて、クライアント側で処理するかどうか検討する予定。

あと、リピートができない不具合を修正しときました。

Friday, September 26, 2014

CrossFadeを実装しました

今回の修正で一番大きいのはCrossFadeです。
設定画面からCrossFade再生をOnにすることができます。

そのほか、AudioVisualizerの計算でFFT処理でまずいところがあったので、修正しました。
イコライザを動かすとちゃんとそれに連動してVisualizerが変わるようになったので、やってみてください。
それと、再生画面の再生中のアニメーションもVisualizerと連動するようになっています。

そのほか、いくつかバグ修正をしました。
再生部分の処理は、大幅なリファクタリングをしたので、Boxでうまく動かなかった人も一度試してみてほしいです。治っているといいのですが、、

Wednesday, September 24, 2014

issues site opend.

issues site opend.
Requests and bug reports JUST PLAYER (Beta) of from here

不具合・要望の報告サイトを準備しました。
サイトは下記のURLから

https://bitbucket.org/yokmama/just-player3/issues?status=new&status=open


Monday, September 22, 2014

I był wspierany w polskim

I dodaje język polski.


To jest ekran menu.
Przetłumaczyłem wszystko także opis ekranu ustawień.

Friday, September 19, 2014

indexファイルのすすめ

Just Player独自のプレイリストフォーマットである、Indexファイルを使うと次のようなことができます。

60分とか90分とか長時間の音源データをクラウドサーバーに置いた状態で、それを全てダウンロードせずに、目的の位置の音を鳴らすことができます。

具体的には、このリンクの動画

https://www.youtube.com/watch?v=cLijO1UAIiQ

これは、複数の音楽を連続再生する動画です。
これに目次をつけると次のようになります。

1 現実的論理主義者
2 夜咄ディセイブ
3 ロスタイムメモリー
4 想像フォレスト
5 如月アテンション
6 チルドレンレコード
7 六兆年と一夜物語
8 ヘイセイカタクリズム
9 キミのことが好きでゴメンナサイ
10 イアイア★ナイトオブデサイア
11 四季刻歌
12 宵、桜
13 イアイア☆イヤークラッシャー 

これを、Indexファイルにすると次のような内容になります。

ARTIST "IA"
TITLE "ボーカロイド IA 好きが選んだ個人的メドレー"
FILE "ボーカロイド IA 好きが選んだ個人的メドレー.mp3"
TRACK 01
TITLE "現実的論理主義者"
ARTIST "IA"
INDEX 00:00
TRACK 02
TITLE "夜咄ディセイブ"
ARTIST "IA"
INDEX 04:33
TRACK 03
TITLE "ロスタイムメモリー"
ARTIST "IA"
INDEX 07:50
TRACK 04
TITLE "想像フォレスト"
ARTIST "IA"
INDEX 12:35
TRACK 05
TITLE "如月アテンション"
ARTIST "IA"
INDEX 16:47
TRACK 06
TITLE "チルドレンレコード"
ARTIST "IA"
INDEX 20:52
TRACK 07
TITLE "六兆年と一夜物語"
ARTIST "IA"
INDEX 23:52
TRACK 08
TITLE "ヘイセイカタクリズム"
ARTIST "IA"
INDEX 27:28
TRACK 09
TITLE "キミのことが好きでゴメンナサイ"
ARTIST "IA"
INDEX 30:40
TRACK 10
TITLE "イアイア★ナイトオブデサイア"
ARTIST "IA"
INDEX 34:18
TRACK 11
TITLE "四季刻歌"
ARTIST "IA"
INDEX 38:36
TRACK 12
TITLE "宵、桜"
ARTIST "IA"
INDEX 42:30
TRACK 13
TITLE "イアイア☆イヤークラッシャー"
ARTIST "IA"
INDEX 46:16

冒頭には、このファイルの説明をいれます。
ARTISTは歌をうたっている人、グループ
ALBUMはこの楽曲のアルバム名(上記のサンプルではありませんが)
FILEはこの楽曲のデフォルトのファイル名

TRACKの項目は、目次を意味しています。
TITLEが目次の名称
ARTISTは目次の部分のアーティスト名
ALBUMは目次の部分のアルバム名、省略すると、冒頭で定義されたものが適用されます。

このファイルを拡張子を .indexにして、音源ファイルと同じフォルダにおいておくと、
JustPlayerからIndexファイルを選択することで、自動的に目次を読込み、プレイリストに追加します。

※ちなみに、上記URLの動画の音源データの入手方法は知りませんので、あくまで参考例として考えてください。

現在、音源に目次を設定し、保存する機能を実装中です。
ですので、いまはこのファイルは手動で作成しないといけないですが、すごく便利なのでぜひお試しください。

あと、この機能ですが、
GoogleDriveではうまくうごきません。
動作を確認できているのはDropbox、Box、Ampache、内部ストレージです。




Thursday, September 18, 2014

Logcatのログの送信機能を追加しました

Logcatのログは以前は端末のログを全部取得することができていたのですが、最近では自アプリのログしか収集できなくなっています。
そのため、別アプリによってログを収集しバグ報告をするという事が出来ないです。

今回のアップデートで、設定画面からアプリのログをメールに添付する機能を追加しました。
これを実行すると、Logcatのログを添付ファイルにし、Gmailクライアントに連携することができます。
メールボタンを押したあとすぐにメールが送信されるわけではないので、内容が気になる場合はメールの添付ファイルを確認してから送っていただければと思います。
とはいっても、あくまで動作がおかしいという場合に修正をご依頼する場合のみ送ってください。ログを送っていただければ、それをもとに問題の原因を把握することができるかもしれません。

Logcat確認画面
それから、今回のリリースで変更されたものとして次のようなものがあります。

・プレイリストから再生中リストへの追加でアルバム、アーティスト名等が反映されない不具合を修正
・再生にあわせて再生中リストの表示位置を移動するよう修正
・再生中リストをクリアしたあと、アンドゥができるように修正
・画面下部のコントロール部分でジェスチャーによって、次の曲へ、前の曲へ、停止、再生ができるように修正
・通知エリアのコントロールの☓ボタンはアプリの終了をするように変更
・いくつかのアイコン、画像、レイアウトを修正

ストリーミング処理も少し修正をしていますので、動きが変わって前よりおかしくなっている可能性もあります。なにか問題がある方はご連絡いただけると助かります。


Monday, September 15, 2014

アルバムアートの取得と、バッファリング状態の表示を追加

キャッシュデータの状態を表示するようにしました。
といってもアイコンがまだなので、いまのところ文字です。
SD:ストレージデータ
CD:クラウドデータ
1−100:作成状態のパーセンテージ

それと、アルバムアートのクイック検索機能を追加しました。
右上の検索ボタンをおすと、タイトル名、アーティスト名から該当するカバーアートを設定します。


あともうひとつ、けっこう以前から実装していたのですが、報告し忘れていました。
設定画面から、例外のレポートを送ることができます。
アプリが落ちたあとに、やると落ちたときの例外メッセージを添付できるので、なにか問題があったときはこれを使っていただけると助かります。

Sunday, September 14, 2014

ストリーミング再生と、次の曲のキャッシュ作成のパスを分けてみた

いろいろ工夫してみたけど、ストリーミング再生用のデータ取得処理と、次の曲のキャッシュ作成を同じような作りでやっているのは無理がでてきたので、大きな修正になるけど別々の処理として行うように変更してみました。

Boxにかぎらず、ほとんどのクラウドサービースはダウンロードをしないでずっと止まっていると、ネットワークが切断されたと勘違いして接続を切断してきます。
ストリーミング処理の場合、とくに音楽再生の場合再生するバッファだけクライアントが取得したら次の取得は、必要になるまで開始されません。
Androidの端末によっては、このバッファの取得サイズが違うようで、たくさんとるものや少ないものもあるように思います。(ここは憶測です)
問題はこの大きいバッファの場合で、この場合長い間通信が止まった状態になっているのだとおもいます。

今回特に問題になっているのは、次の曲の再生処理です。
今までは、曲の切り替わりを素早くするために、次の曲を事前に読み込んでおく処理をいれていました。
しかし、これをMediaPlayerにまかせていたため、再生されない状態でずっとほっとかれるため、バッファの読込処理もずっと止まった状態になります。
これが、次の曲の読込で失敗する原因です。

一つ前の修正でひとまずMediaPlayerにまかせっきりで処理をしていた部分を自分で行うように変更してみました。
これで、ある程度解決できたのかなとおもっていたのですが、まだ失敗する場合があるようなので、さらに原因を調べてみていたのですが、、ここまでずっと修正修正ときていたので、問題の箇所のコードが難しくなりすぎ、理解しずらくなっていました。
なので、ここは思い切ってリファクタリングをすることにし、処理を別々に分けることにしました。

ということで、今回の修正はプログラムを最適化したリリースになります。
ダウンロード専用のコードを書いたので、前より早くなっていると思います。

今回の修正でダウンロードの事前処理を容易に行えるようになったので、長らくほったらかしになっていた、「デバイスに保存」機能の実装にとりかかろうかと思います。ついでにダウンロード中か、どうかのステータス表示もいれます。(だけどアイコンで悩み中、、)


Friday, September 12, 2014

Boxのファイルを連続再生していて途中で止まる現象に悩む

Boxの再生について前回の修正でだいぶましになったと思っていたのですが、やっぱり途中で止まる不具合が発生しています。
しかもとまるだけじゃなく、延々とリトライをする始末。

どうして、このような事がおきるのかというと、Boxにファイルをダウンロードリクエストすると、途中で失敗するケースがあるので、続きは途中からのリクエストを作成するようにする必要があります。(ここは前回の修正の範囲)
だけど、これだけでもまだ問題があるようで、途中からのリクエストをした場合には途中からのリクエストを返しました、とBoxから返事がくるはずなのですが、なにを勘違いしたのか、特定のファイルでは最初からダウンロードを要求したのと同じ結果をかえしてくる場合があります。
そのため、こちらは混乱してしまいます。
最初からのデータを返してくるというのなら、それなりに正常系の処理として対処の使用があるものの、ヘッダ情報だけはいっていて中身がありません。
それで、データのチェックの際、上記でおかしな点がみつかりエラー処理をするのですが、今度はMediaPlayerがそれに納得いかないのか、もう一回、もう一回と再リクエストをしてしまい、ずっと読み込み中の画像がでてくる状態になっています。

この問題について、手元のバージョンでは強制的にMediaPlayer側に停止をするようにプログラムで回避する修正をしました。
といってもMediaPlayerが諦めてくれるまでに30秒ぐらいはかかる感じです。




Thursday, September 11, 2014

イコライザを修正しました

イコライザで未実装だった箇所を実装し、UIを見直しました。
画像はひとまず適当なものを当てているので見た目は地味なかんじです。
正式リリースまでには良いものに変更したいと思っています。


Wednesday, September 10, 2014

あー、いろいろバグいれこんでしまってるみたい

とりあえず既知のバグとして

・SDカード内の音楽の再生で次の曲にいくときに停止してします。
・キャッシュが作成された音楽なのに先読みが実施されてなくReplayGapが効果してない。

あと他にもあったら追記しておきます。
次のリリースで修正されます。内容が内容だけに次のリリースは早めになるとおもいます。

Tuesday, September 9, 2014

ブックマーク機能をひとまず実装してみました。

えーと、ブックマークというのは任意の音楽のある一部分をブックマークし、曲のように扱う機能のことです。

ブックマークというのが妥当な名前なのかどうかは分かりませんが、他にこのような機能を持っているアプリがないので、分かりやすい言葉がしっくりくるだろうとこの言葉にしました。


クライアントのバッファリング処理の実装を見直してます。

BoxのAPIを更新してから頻繁にコネクションが切れる現象に悩まされています。
切れるだけならまだしも、何度か失敗するとAudioManagerがハングアップして音が一切ならなくなる不具合に見舞われてるのでかなり問題。

原因はなんなのかなぁーといろいろコードを見なおしてみてるけど、よくわからなかったのですが、もしかしたら、という仮説を考えています。
その仮説というのは、MediaPlayerのバッファリングがいつまでたってもReadしてくれないのでサーバーがコネクションロストと判断して切断してるんじゃないのかなということです。
理由は、だいたい決まって30秒程度で失敗しているのとStackTraceのエラー内容から、、
MediaPlayerは再生分よりも多めにバッファリングしてますが、ある程度再生しないと次のバッファを読み込もうとしません。だからかなぁ、、
対応策として、ダウンロードのラインとMediaPlayerに供給するラインを別々にすることだとおもうので、ちょっと試しにこの実装をいれようかなとおもってます。
というわけで、次のバグ修正版のリリースが遅れると思います。
明日作業を見積もって長くかかりそうだったら、一旦現時点でバグを潰したバージョンをリリースします。