Translate

BTemplates.com

Powered by Blogger.

2017年9月9日土曜日

2017-09-08 到達点メモ


string.xmlで存在しないローケルを作って、それを削除した後
コンパイルをかけたら、以下のようなエラーが出る
Error:Error: Invalid resource directory name android
XXX(消したフォルダ名)

まず、正しいローケルの名前は
wikiのココが参考になります。なお、二文字のみです

で、正しい名前を作った後は
string.xmlが入っているフォルダのエクスプローラーを開きます
そうすると、消したはずのファイルのフォルダが残っていますので
それを削除します。

そのあと、クリーンビルドをかけて構成しなおすと
コンパイルができるようになります

それより、なぜか言語を変更すると一部のファイルが読み込めない件について
使っているのはzhです。*zhで中国語の簡体字で閲覧できるのはわかった。

念のため、日本語で再度確認をしてみたが
音声が再生されないとかはなかった。
細かく試した結果そんな事は無かった。
多分、今まで使っていた機器は性能が高かったから
全部ロードした後に表示できたけど
他のはそうではなかったというだけっぽい

素直にロードしたデータを使いまわす処理を実装しよう
という訳で原因はそれだったっぽい
以下を参考に解決しました。

参考サイト
AndroidアプリでContextを持ち回したい話

ただ、この方法だと一部の音声ファイルのロードができなかった。
色々試した結果、アラーム音の再生時間を2秒から1秒に縮めたところ
ロードできるようになった。
話によってはSoundPoolの再生が長いとロードされないという報告はあったが
そういう理由なのだろうか?
確かに、この音声ファイルがこの中で一番再生時間が長かったし
(*もっとも、空白時間も含めれば、1.7秒と1.5秒だったので2秒が境目なのかも?
実際の再生時間自体は、1秒くらいであるが)
大体音が鳴らないのがこのファイルだったのは確かだが……。
今回の問題に限っていえば、音声ファイルを編集したほうが早かったかもしれない。


解 決 し て い な い。

大まかに10回に2回くらいの割合でロードできないファイルがでる
しかも傍から見てランダム。

そして、少なくとも自分が使っているAQUOS ea Android7.0だと発生しない
ASUS ZenPad 7.0のAndroid5.0.2(API21もしくはLOLLIPOP)だとこの現象が発生する

結局見当がつかない
最悪、ロードできないファイルが存在したら
アラートを出して立ち上げなおしかなぁ……

いや、出来ればそれは避けたいが本当にどうしよう……。
煮詰まってきたので今日はここまで


追記:
忘れていたのでApplicationをextendしないで
グローバル変数化するやり方
此処のやり方は時間を見て試す


0 コメント:

コメントを投稿