Monday, June 15, 2015

壊して作っての繰り返し中

仕事が落ち着いてきたので、開発を再開しました。
しかし、一回開発を止めてしまうとモチベーションをあげるのに苦労します。
とりあえず、目下やらないといけないことは不具合を治すこと。

1 一部の端末でAmpacheの設定後に落ちる。
2 一部の端末で起動できない。
3 画面の切り替え後に落ちる
4 ストリーミング再生のとき、頭の数秒が欠落している。
5 曲が一曲ずつしか再生されらない(連続再生できない)

というような不具合報告がきています。
1,2、3に関しては、Blaur効果のViewが問題のようにおもいます。
これはRenderScriptで直接ハードをガリガリやってるのもあり、相性の悪い端末があるよです。ログを見る限りそう思いました。


4に関しては、ストリーミングの処理にまずい問題があるのかもしれない。テストが不十分な箇所なので、おそらく、一部のサービスの一部のファイルフォーマットでは顕著に問題がでやすいのだとおもいます。

5はよくわからない。

あと、新しくAndroid M Previewがリリースされました。これに伴いDeplicatedなメソッドが増えています。
これらの修正もしないといけない。

というわけで、一旦問題を整理するためにプログラムの掃除をしているところです。
やっと、再生リスト周りの修正がおちついてきて、それをベースに他の画面を修正しようとしているところです。



Tuesday, February 10, 2015

バージョン2142000109をリリースしました

最近はGoogle+のユーザグループに軽く修正項目を報告するだけなので、あまり外に対して情報がでていませんでしたが、ちゃんと開発を進めています。

最後のポストからの大きな変更として

・無料版(広告付き)をプレイストアに追加しました。
・「後で聴く」機能を追加しました。
・アルバム一覧、アーティスト一覧、曲一覧のレイアウトを変更しました。
・レーティング機能を追加しました。
・インデックスバーを追加しました。

以上がめぼしい修正です。このほか、多くのバグを修正しています。

無料版についてですが、こちらは、正式版のリリースよりアップデートの頻度が違うという点で住み分けをする予定です。
あくまで無料版はクラウドにアクセスするテスト、あと使用感といったものをみていただくという位置づけです。

更新頻度は次のようになっています。

ベータ版(随時、だいたい週1)>正式版(隔週)>無料版(月1)

それと、レーティング機能としてスマートレーティングという自動機能が追加されています。
振る舞いとしては、

曲の再生が開始されてすぐに曲をスキップした場合、レーティングを−1します。
逆に、最後まで聴くと+1にします。

この機能は、現在のところ正式版でかつ、有料になるプレミアム設定を購入した場合のみ使えるようになります。

次はキャッシュの自動制御機能にとりかかります。


Friday, January 9, 2015

バージョン2142000091をリリースしました

バージョン2142000091をリリースしました。

今週二度目のリリースなので申し訳ないです。 
しばらく仕事で忙しくなるので、今回のアップデートから次のアップデートまでは時間が開くとおもいます。(どうしても我慢できなバグが発覚したらすぐに修正します。)
とはいっても一ヶ月以上も間隔は開けたくはないと思っています。 

今回のバージョンアップで主な修正は「後で聴く」機能の追加です。
これは以前から待望されていた事前ダウンロード機能です。 
再生に影響がないように、再生中の曲がバッファリングしているときはダウンロードは一時停止するようにしています。
あと、次の曲のバッファリングは優先順位を高くするといった動きをします。 

ネットワークによってダウンロードの制御もいれたいところですが、今回のバージョンではそこまでの作り込みはしていません。 

それと、再生リストに追加時に自動で「後で聴く」に登録する機能も有料オプションになりますが追加しています。
あんまり調子にのって登録しまくると端末の容量がすぐいっぱいになるので気をつけてください。 
将来的にはキャッシュの自動削除機能を追加したいので、それまではこまめに手動で削除して欲しいです。

ちなみに、設定のキャシュ削除だと一括で全部削除しますが、キャッシュ一覧からだと選択して削除できます。

Wednesday, January 7, 2015

再生状態変化によるアプリ連携について

AppWidget等にわたすIntentに以下のような値を設定するようにしました。

Intent broadcast = new Intent(AppWidget1.ACTION_CALL_UPDATEWIDGET);
            broadcast.putExtra("play.state", mIsPlaying);
            broadcast.putExtra("artist", mTrack.getArtist());
            broadcast.putExtra("title", mTrack.getTitle());
            broadcast.putExtra("album", mTrack.getAlbum());
            broadcast.putExtra("duration", mTrack.getDuration());
            broadcast.putExtra("albumArt", mTrack.getAlbumArt());
            broadcast.putExtra("data", mTrack.getUri());
            if(notificationIconBitmap!=null) {
                broadcast.putExtra("artImage", notificationIconBitmap);
            }

            //AppWidget
            Intent broadcast = new Intent(AppWidget1.ACTION_CALL_UPDATEWIDGET);
            broadcast.putExtra("play.state", mIsPlaying);
            broadcast.putExtra("artist", mTrack.getArtist());
            broadcast.putExtra("title", mTrack.getTitle());
            broadcast.putExtra("album", mTrack.getAlbum());
            broadcast.putExtra("duration", mTrack.getDuration());
            broadcast.putExtra("data", mTrack.getUri());
            if(notificationIconBitmap!=null) {
                Uri albumUri = makeAlbumImage(notificationIconBitmap);
                if(albumUri!=null) {
                    broadcast.putExtra("albumArt", albumUri);
                }
            }

このIntentは再生開始時と再生停止時に呼ばれます。
play.stateにtrueがはいっているときは再生中、falseは再生停止です。
それと、"artImage"に設定されたBitmapはNotificaitonに設定されたBitmapです。
albumArtはそのイメージへのURIですがHTTPではなく独自スキーマがはいっているのでご注意ください。

Bitmapを設定すると、サイズが大きいとエラーになったので、一旦テンポラリに保存してそのUriを渡すようにしました。キーの値はalbumArtなのでご注意。テンポラリの画像は次の再生とかキャッシュのクリアなので削除されるのでそのつもりで。

「べ、別におまえに渡すために設定したんじゃないからねーからな!
せっかく取得したのに、もったいねーから設定しておいただけ勘違いすんな。
と、とにかくだ、 artImageを取得すれば簡単に曲のBitmapが取得できるってことだけ覚えてくれたらいいんだよ。
あと、artImageはいま実装したばっかりだからベータ版(2142000090 2142000091)でないとつけないかんな。」




Tuesday, January 6, 2015

バージョン2142000089をリリースしました。

Just Playerのバージョン2142000089をリリースしました。

主な修正は以下のとおりです。
* a2dp対応のBluetoothヘッドフォンに対応
* AmpacheのAlbumArtが表示されなくなる不具合を修正
* シークバーの位置が一時停止後0になる不具合を修正
* ツールバーがときどき消える不具合を修正
* ホームに追加をメニューから選択できるように修正
* PlayStoreに報告が上がっているいくつかのエラーの修正
* Boxをメイン画面に設定するとログインが無限に表示される不具合を修正

今回大きな修正は、A2dpなBluetoothヘッドフォンの対応です。
これまでもペアリング済みのBluetoothヘッドフォンで曲の一時停止、再生といった操作はできていましたが、ペアリングが解除されたり、ヘッドフォンの電源がOffになった場合自動で一時停止されないし、また再接続時に自動で再生がされませんでした。
新しいバージョンでは再生されるようになっています。
それから、早送り、巻き戻しも対応しておきました。

Friday, December 12, 2014

ベータ版2142000080をリリースしました。

2142000080をリリースしました。
リリース内容は以下のとおりです。

・Playlist画面、Ampache画面、キャッシュ一覧画面を実装しなしました。
具体的にActionBarをやめてToorlBarに対応し、Fragment化を行いました。
これにより、キャッシュ一覧、再生中、アルバムアートと3画面あったメイン画面のうち、キャッシュ一覧の画面を置き換えることができるようになりました。
ただ、この機能はまだ実装中なのでこれに対応しているのは、プレイリストとAmpacheのみです。今後、Dropbox,Box,GoogleDrive,LocalStoregeと対応していきます。
使い方は、サイドメニュー上のAmpacheやPlaylistの項目を長押しをすることメニューが表示されるので、そこから「ホームに設定」を選択すると置き換えることができます。
ホームに設定を選択
・カテゴリ、ソート、表示スタイルを変更できるようになりました。
これは機能によって異なりますが、キャッシュ一覧に関しては、グリッド表示、リスト表示を選択できるようになっています。

・AmpacheのVideo再生に対応しました。
AmpacheのカテゴリをVideoにするとAmpacheに登録されているVideoが一覧に表示されます。

・プログラムを最適化し軽量化しました。
いくつかの依存ライブラリを見直ししプログラムを最適化しました。

・いくつかのバグを修正
たくさん修正したとおもうけど、、、

・320x480の端末でイコライザが操作できない問題を修正しました。



Monday, December 8, 2014

開発状況

毎回、このブログを英語で書くべきか日本語で書くべきか悩むところなのですが、、
いまのところまだ日本人のほうがユーザが多いので、日本語でブログを書いています。
それに僕自身英語苦手なので細かいニュアンスを伝えることも難しいですし。