月別: 2015年3月

覚え書き

java.lang.RuntimeException: Content has view with id attribute 
'android.R.id.list' that is not a ListView class

のエラーが出た時にぐぐったようだが、どれが答えか忘れた(ノ∀`)

xml – “Content has view with id attribute ‘android.r.id.list’ that is not a ListView Class.” when create a list view in a fragment – Stack Overflow
FATAL EXCEPTION: main java.lang.RuntimeException: Content has view with id attribute ‘android.R.id.list’ that is not a ListView class – Stack Overflow
Your content must have a ListView whose id attribute is ‘android.R.id.list’ – Stack Overflow
java.lang.RuntimeException: Your content must have a ListView whose id attribute is ‘android.R.id.list’ – Stack Overflow


Caused by: java.lang.ClassNotFoundException: 
Didn't find class "com.xxxxx.yyyyy.MainActivity" on path:
 DexPathList[[zip file "/data/app/com.xxxxx.yyyyy-1.apk"],
nativeLibraryDirectories=[/data/app-lib/com.xxxxx.yyyyy-1,
 /vendor/lib, /system/lib]]

何のエラーだか覚えてなかったけど、サポートライブラリのコンフリクト絡みみたい。
java – Android ClassNotFoundException: Didn’t find class on path – Stack Overflow


マニフェストファイルから記載されているアクティビティを取得してインテントで
起動する際に読んだ…はず。

StringからActivityを開始する
java – How can I start a new android activity using a string? – Stack Overflow

contextからactivityのクラス名を取得する – Screaming Loud


あんまり詳しく覚えていないが、何の考えもなしにSDK等を最新版にしたら
eclipseがおかしくなった。

android:actionModeShareDrawable No resource found 
that matches the given name

やら

android-support-v7-appcompat] Unable to resolve target 'android-21'

というエラー(警告?)を消そうと思って、
SDK更新後にAndroid のビルドエラー(No resource found that matches the given name)AICS
gradle – appcompat-v7:21.0.0′: No resource found that matches the given name: attr ‘android:actionModeShareDrawable’ – Stack Overflow
のことを試したり、

@integer/google_play_services_version

のエラーを消そうと
y.okano blog: Eclipse で google_play_services_version が見つからない
を試したり、その他諸々のことを適当にいじくっていたら、
eclipseがおかしくなった…(ヽ’ω`)

長時間奮闘したが復旧せず、新しいeclipse環境を構築し直す…_| ̄|○
途中、AndroidStudioに乗り換えようと思ったが、いまいち慣れないのと
うちのマシンの性能が低すぎて、取り敢えずインストールしてサンプルを
実行しただけ…__◯_ まあいずれ使ってみよう…何にしても時間を無駄にした…

Fragmentがよくわからない(´・ω・`)

一応、ViewPagerにListFragmentを乗せてListViewのアイテムをクリックすると
音楽再生がされるようになった。回転しても問題ない。

アルバム別とアーティスト別は詳細項目を表示せずに、全ての曲を再生するという形にして
みたが、何かそれはおかしいと気付き、各アルバム、各アーティスト用のフラグメントを
用意してみようと試みる。

だがここで一週間弱はまる…(ヽ’ω`)
そして今も完全には解決しているわけではない…_| ̄|○


色んなサイトを巡って読むのに疲れた…__◯_
ようやくreplaceを使って新しいFragmentを表示出来た(・∀・)と思ったら
前のFragmentが何故か残ったまま……サイトによっては上に来る背景色を
不透明にして下のFragmentのenabledをfalseにするみたいなことが書いて
あって「( ´・ω・)エ?」となる。俺氏はFragmentを理解していない又は勘違いしている
という可能性が高いのだが「なんだこの糞仕様は(´・ω・`)」とがっくり来る。
何かしらの理由があってこういう仕様なんだろうけど。
FragmentStatePagerAdapterを使えばいいのだろうか?
それともsetRetainInstance(true)の絡み?

Android: Replaced Fragment Is Still Visible
T.Yokoyamaのブログ: Support Packageを使ってFragmentを利用する

Fragment#replaceを使わずに一気にFragmentを交換するというのもあってコードを
眺めていたら一旦Fragmentを全部削除して差し替え済みのListを渡す形になっていて
「なんという力業…( ;・´ω・`)ゴクリッ」と思ったが、replace自体が

処理としては、同じ containerViewId に追加されている全ての Fragment に対して remove(Fragment) を呼び、それから add(containerId, fragment, tag) を呼ぶのと同じ
Android FragmentTransaction のまとめ

という形みたいなので、replaceからして力業なんかΣ(゚∀゚;)


というわけでFragment関連のドキュメントを読みすぎてFragment酔いになり、
加えてFragmentManagerのバックスタック?ってアクティビティ内で一つだけ
っぽいのも気になり、何故か「Activityをフリックして切り替えるコードが
確かあったから、複数のFragmentじゃなくて複数のActivityにすれば
FragmentManagerのバックスタックも個別になるんじゃね(・∀・)?
左右の無限ループも可能になるし」と血迷う。

またActivityやGestureDetectorなどを調べたり、コードを移植するのに
長い時間を費やす……___ 

お試しだから決め打ちでいいのに、何故か汎用的にしようとし更に時間を…

具体的にはActivityManagerみたいなクラスを作って、getPackageInfoで
得た文字列を、フリック対象のActivityを指定する為のActivityの
名前(正確にはstartWithで使用するプリフィックス)でふるいにかけて出来た
パッケージ名込の文字列のArrayListを渡して、そのままのArrayListと
lastIndexOf(“.”)で切り分けたActivityの名前のみのArrayListにして、
GestturaDetectorの左(右)へのフリック時にgetLocalClassName()で得た名前を
ActivityManagerへ送ってAcitivity名のArrayListの位置から現在位置と左(右)の
パッケージ名込のAcitivity名を取得して、その名前からClass#forName()で得た
クラスでインテントを作成して左(右)のActivityを起動するという……
なんだか書いていてよくわからなくなってきた…( ´・ω・)

そこまでやってListFagmentを乗っけた ← イマココ


これにはまってて翻訳はDevice Compatibilityまでしか訳せてない…(ヽ’ω`)
全然関係ないけどこのページのCompatibilityは互換性じゃなくて適合性で
訳した方がすっきりしたな。

FF10-2

なにこのゲーム…( ;´Д`)
 
 
 
 


前作は適当にやったから、今度はちゃんと考えてスフィア盤やろっとヽ( ・∀・)ノ
と思っていたらシステム自体ががらっと変わっていた…(ヽ’ω`)
成長システムは従来型の経験値タイプで戦闘はATBになっていたw

まあ色々と言いたいことはあるが、とにかくストーリーが糞だったw
前半はちょっとはwktk感はあったものの、シューインとレンの話が出て来た辺りから
なんか怪しくなっていって、最終的にこの作品は駄作というか蛇足という評価に落ち付いたw

ユウナのキャラが激変というのはそんなに気にならなかった。
前作において大任を果たしたのちに普通の女の子になったんだねぇという風に
受け止めてやっていたので特に気にならなかったが、「ユ・リ・パ」とかカモメ団の
ダダ滑り感が凄く寒かったw 

かなり早い段階でこれは続編じゃなくて外伝とかファン用の同人的作品なんだなぁと
生暖かい目モードになったので糞ゲークリアミッションとして最後まで粛々とやれた。


前作のFF10や他のゲームでは早くクリアして最強の武具防具は何だったんだろうかとか
あのボスはどうやって倒せば楽だったのか等を知る為に攻略情報サイトを見たいという
気になったが、このゲームでは「これFF10が好きでリアルタイムで定価に近い金額で
買った人はどういう評価なんだろうか」ということをぐぐりたくてしようがなかったw
まあぐぐってみたら予想通りの結果だったけどw

擁護というか好意的評価として戦闘システムはATBの完成形云々というのがよくあった。
良いとは思うけどそんなに騒ぐほどのものでもなかったような。自分自身も映画やゲームで
「全体的には駄目だけど、~は良かった。」という感想をよく書いたりするけど、あれって
結局、他の要素が駄目だから相対的にその部分が良く見えているだけだったり、自分の
行為を価値あるものであったとしたいが為にポリアンナ症候群的に”良かった探し”を
しているだけなのかもしれないなと少し自省的になったw

戦闘システムをそんなに良いと思わなかったのはドレスアップシステムをそれほど有効に
使わなかったのとサムライとフロラフルルとマキナマズルくらいしか追加ジョブを拾って
なかったからかもしれない。HD版では違うのかもしれないがPS2無印版ではアニメOFFに
していても一回だけは表示されてしまう仕様らしく、その時間がかかって鬱陶しいイメージ
から戦闘中は進んではドレスチェンジしなかった。というかそんなにドレスチェンジする
必要がなかったような気がする。


厳しいクリア条件を満たすとトルゥーエンドとしてヤツが復活するらしいが、
今作をやった後での気持ちから言うと、
復活しなくていいな( ・∀・)

というより今作はなかったことにした方が良い。その方が絶対良いw

このFF10-2の段階でも酷いが、FF10-2.5という公式の後日談小説が更に酷いらしいw
一応、ヤツの復活出来た仕組みについての説明を導く為の流れのようだが。
そう言えば召喚獣が復活したロジックが良くわからなかったな。

色々ぐぐったらFF10-2はFF10の開発費回収の為に無理矢理作られたものであると
いう話もあったがどうなんだろう? その話が本当に思えるくらいの酷い出来なので
一概にデマとは断定出来ないw FF10-2の評価が良かったらFF10-3も出すつもり
だったんじゃないかともあったが、正気とは思えないw

穴に飛び込んだ辺りから、ずっとニヤニヤ笑いが止まらずにプレイしていたが、
この先もFF10-2の話題に触れた時に生暖かいニヤニヤ笑いになってしまう気がするw


本当に呼吸と食事と排泄くらいしかやることがないというくらい暇な人なら
やってみてもいいかもしれないけど、普通の人が無理してやる必要はないと思う。
もっと面白いゲームは山ほどあるし。

覚え書き

E/ActivityThread(2733):
Activity com.example.musicplayer.MusicPlayerActivity 
has leaked ServiceConnection 
com.example.musicplayer.MusicPlayerActivity$1@44ac5bd8 
that was originally bound here

色々なパターンで出るらしいが今回の場合はunBindしてないサービスを再びbindしようと
していたのが原因みたい。あとonDestroyでunBindしていない場合にも発生した。


QCMediaPlayer mediaplayer NOT present

android – Why MediaPlayer throws NOT present error when creating instance of it? – Stack Overflow

It means your platform does not support QCMediaPlayer. 
QCMediaPlayer provides extended APIs and interfaces to get 
and set MPD attributes for DASH protocol in compatible 
Snapdragon builds. So, this error should not affect on 
media playing in normal case

”あなたのプラットフォームがQCMediaPlayerをサポートしていないことを意味します。QCMediaPlayerはSnapdragon互換ビルド?でDASHプロトコル用のMPD属性を取得や設定する為の拡張されたAPIやインターフェースを提供します。従って、このエラーは通常の場合メディア再生に影響しないはずです。”

みたいな感じなので、無視していいみたい。SOL25がsnapdragon搭載だから出てるのかな?



MediaPlayer Should have subtitle controller already set

Should have subtitle controller already set というエラー – Google グループ
Should have subtitle controller already set Mediaplayer error Android – Stack Overflow
Android MediaPlayer warning: Should have subtitle controller already set – Stack Overflow

kitkat(4.4)以降で出るようになった模様。subtitle controllerが動画の字幕関連の
ものらしく、音楽再生には関係ないらしい。二番目のページで空のSubtitleControllerを
作ってMediaPlayerにセットするという回避法らしきものがあったけれども、面倒なので
試していない(ノ∀`) 歌詞ファイルでも読み込んで適切な時に歌詞をくれるなら意味が
ありそうだが、そんな機能はあるんだろうか?


MediaPlayer.create() と setAudioStreamType() は相性が悪い

何を調べてる時にヒットしたのか忘れたが、こういうこともあるのか。


stop called in state 1

元にしたチュートリアルのServiceのonUnbind()と同じ

mp.stop();
mp.release();

にしていたが、終了方法が違う場合にエラーが出た。

idleかなんかの状態でstop()を呼んでるのがいけなかったらしい。
stop()をreset()にしたら、エラーは出なくなったがこれでいいんだろうか?
そもそもrelease()が呼び出せる状態がanyだからreset()する必要はあるのか?
謎だ。


ViewPagerでの無限ループ移動が出来るかどうかぐぐった。
→ あるにはあったが、なんだかようわからんのでパス(´・ω・`)
→ ViewPagerにListFragmentを載せる方法がわからなくて四苦八苦
→ 色々ドキュメントを読んでようやくわかる∩(・ω・)∩
→ 画面回転時にアクティビティが再作成されてService内で色々とエラー地獄
→ MediaPlayerをunBindせずreleaseもせずやろうとするも違うエラー地獄
→ android:configChanges=”orientation|screenSize”を指定して自分で
レイアウトをいじる方法を探すかと思う(´・ω・`)
→ 指定したらエラーが消えて何故か画面回転してもきちん横長なレイアウト?になる
→ フシギ(・∀・) ←イマココ

なんで大丈夫なんだろうか。大元がmatch_parentなViewPagerだけで中身が
setRetainInstance(true)してるFragmentだからレイアウトが関係ないと
いうことなんだろうか。基礎知識がないのでよくわからないw

今回の件でようやくAndroidの基礎的な部分を調べ始めた(ノ∀`)


仕事探さなきゃといいながらこんなことやったり、Androidの基礎編とか
訳し始めながら、ソリティ馬やったり、ねこあつめでまんぞくさんの為に
高級カリカリを用意したりする日々。これではいけませんね…( ´・ω・)