FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android アプリ 細かい事

以前作ったアプリの体裁を整えてみました。

画面の固定やスリープさせない方法は以前調べたので、今回はその他細かい事をメモしておきたいと思います。

1.ボタンの配置
ボタンはViewクラスを継承しているらしいので、Viewと同じように扱います。つまり、Activityクラス内で

addContentView(button, new LayoutParams(100,60))

のように使うみたいです。LayoutParamsの引数には、widthとheightを指定します。LayoutParams内に定数としてもいくつかあるので、それらを用いてもいいようです。

また、今回録音のON/OFFをボタンでしたかったので、ToggleButtonというのを使いました。

2.AudioRecordによる録音の一時停止
録音の一時停止ですが、結構苦戦しました。stop()をすると、再度start()では再開できませんでした。読み込み用のスレッドが立っていたからなのか分かりませんが・・・。スレッドもwait()で一時停止させてみたのですが、強制終了となってしまいダメでした。
処理のさせ方がよく分からず、最終的には一時停止フラグの変数を用意して、フラグが立っているときは、スリープでループ、立っていないときは、録音するといった感じの処理にしました。

public void run(){
while(!isEnd){
if(isWait)
Thread.sleep();
else
rec.read(buffer,0,READ_NUM);
}
}


3.アプリの終了処理
単にfinish()とActivity内でやっただけだとエラーが出てしまったので、いろいろと終了させてからfinish()することにしました。
まず、isEndフラグをtrueにし、スレッドを終了させます。スレッドが終了するまで、
while(thread.getState().equals(Thread.State.TERMINATED)){}
といった形で待ちます。いやなんか待つ関数があったような気もしますが、とりあえず適当に。
次に、rec.stop()で録音を停止させます。最後にrec.release()でリソースを解放します。
これで、finish()とやると、綺麗に終了できました。

4.onPause()内でのアプリの終了
onRestart()でアプリが再呼び出しされると、何故かViewが正常に動いてくれなかったので、特に残ってもらう必要もないので終了させることにしました。
3.の処理を中に書いただけなのですが、それでもエラーが出るので、何故かと思ったらsuper.onPause()を呼んでなかったからみたいです。必ず必要なら無条件に入れておいてくれればいいのに・・・。
もしかしたら、super.onPause()を入れたら、finish()だけでも終了出来るかもしれませんね。

コメントの投稿

管理者にだけ表示を許可する

プロフィール

sin

ニックネーム:sin

趣味でプログラムの作成などをしています。

Google+1
最新記事
カテゴリ
検索フォーム
リンク
最新コメント
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。