トップページ⇒tech
1001コメント363KB

Androidプログラミング質問スレ Part23

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/06/19(火) 19:57:12.12
このスレではAndroidSDK・NDKやAndroidマーケットに関する質問を扱ってます。

※プログラミング自体が初めて!なあなたには↓↓↓こちらへ
スレ立てるまでもない質問はここで 118匹目
http://toro.2ch.net/test/read.cgi/tech/1331904826/
Eclipse統合M32【Java/C++/Ruby/Python/Perl】
http://toro.2ch.net/test/read.cgi/tech/1320318310/
★★Java質問・相談スレッド153★★
http://toro.2ch.net/test/read.cgi/tech/1334438859/

****関連リンク****
■ Android developers http://developer.android.com/
■ ソフトウェア技術ドキュメントを勝手に翻訳 http://www.techdoctranslator.com/

****前スレ****
Androidプログラミング質問スレ Part22
http://toro.2ch.net/test/read.cgi/tech/1337170429/
0283デフォルトの名無しさん2012/07/01(日) 22:46:37.25
スレッドつくるとき
(new Thread(new Runnable() {
@Override
public void run() {
//処理
}
}.start();
っていうのがよく載ってるけど
new Runnable()ってなくても動くんだけど
なんのためにあるんでしょう?
0284デフォルトの名無しさん2012/07/01(日) 22:47:41.49
>>282
あーちがう、
>>280の「onReceiveの処理をメソッドごと削除する」前の段階のソースで
onReceiveの冒頭にsuper.onReceive(context, intent);入れるだけで意図通り動くと思うよ。
ちょっと回りくどかった
0285デフォルトの名無しさん2012/07/01(日) 22:51:55.64
めんどくさいので読んでないけどこんな感じにしる

−WidgetProvider側
 −onUpdate()
   // ここでウィジェットのボタンにpendingIntent設定
   // PlaybackServiceからカレント曲情報をもらってwidgetを更新
 −onReceive()
  if("jp.hoge.updateStatus".equals()){
   // ここでサービスからのIntentを受け取ってbundleから曲情報を取得してウィジェットを更新
   // 再度PendingIntentを設定(ウィジェット更新するたびにこれやらないとダメだった希ガス)
  }

−PlaybackService側
 −onStart();
  // 再生処理とか停止処理を行う。
  // 再生状態(再生中か停止中か)、シャッフルの状態、リピートの状態、再生してる曲情報などをBundleにくっつけて
  // アクションを「jp.hoge.updateStatus」にしてIntentを飛ばす→WidgetProviderで更新処理

−マニフェスト
 −WidgetProviderのところにIntent-Filterを設定 例:jp.hoge.updateStatus
02862462012/07/01(日) 23:54:43.20
>>284
>>285
出来ちゃった。ありがとうございますw
0287デフォルトの名無しさん2012/07/02(月) 00:13:13.07
>>283
なくても動くの意味がわからないけど。
まずrunableを動くように作って、それからthread化しない? それとweb serverとか考えるとrunableをclient数分だけthreadにするでしょう。
02882462012/07/02(月) 00:17:40.55
実はもう一つ困っている事があるんですが、
リストとVIewPagerのスクロール速度がかなり重くなっています。
それが重くなったのはアルバムにアルバムアートのサムネイルを割り当ててからです。
処理的には起動時にqueryでALBUM名取得→ALBUM_ID取得→ALBUM_ARTを各アルバム毎に実行して、
リストを表示するようになっているのが原因と思われます。

これでは遅いのでART情報のUrlをDB化してリストに貼付けていたのですが、
MediaScanで取得された更新分だけをDBにinsartする方法が分からず、元に戻してしまいました。
ググりまくってStack Overflowとかも何度も除いてみたのですが、いい方法が見つかりませんでした。
何かいい方法ありますか?
0289デフォルトの名無しさん2012/07/02(月) 00:21:25.32
複数のmp3ファイルを長さ順に並べたいと思ったんですが、自分で考えつくのはmediaplayerに一度入れて長さを取得して次のを入れて長さを取得しての繰り返す方法です
これだと無駄に時間がかかるような気がします
もっと効率的な方法はないでしょうか?
0290デフォルトの名無しさん2012/07/02(月) 00:57:32.09
>>288
スクロールの速度を早くしたいだけなら
アルバムアートの読み込みをThread化するがよい
「Listview 非同期 画像」あたりでググると参考いっぱい
02912462012/07/02(月) 01:08:45.00
>>290
ありがとうございます。ググってみます!
それと少し説明不足なところもあったので補足させていただきますと、
起動時間も早くしたいので、出来ればMediaScanで追加されたアルバムアートや曲データの
差分情報を取得する方法などのアイデアなどもあれば知りたいです。
アルバム数が100枚を超えると、その取得に1〜2分位、毎回起動時に要してしまうので。


0292デフォルトの名無しさん2012/07/02(月) 01:12:52.95
>>287
(new Thread() {
public void run() {
//処理
}
}.start();
って書き方はなにか間違ってる?
自分でなにがわからないのかわからない状態なのかも
0293デフォルトの名無しさん2012/07/02(月) 01:20:37.85
>>291
MediaStoreってどんな構造なんだっけ?と思ってみてみたけど
MediaStore.MediaColumnsのDATE_ADDEDとDATE_MODIFIED
辺りで条件判定して取り出せばいいんじゃないの?
0294デフォルトの名無しさん2012/07/02(月) 01:20:39.19
>>291
ん? アプリ起動時にアルバム情報とアートを全取得してるの?
CursorAdapter使えばいいんじゃなかろうか
0295デフォルトの名無しさん2012/07/02(月) 01:24:38.34
>>292
Threadはクラス、Runnableはインターフェイス
「Thread Runnable 違い」ででもggr
0296デフォルトの名無しさん2012/07/02(月) 07:35:22.15
>>292
class service implements runable{
}
service servive=new service();
while(connect())new thread(service).start();
とかいう使い方を基本として考えて設計されたから、そういう使われ方が多いんじゃないかってことだ。
0297デフォルトの名無しさん2012/07/02(月) 11:44:42.41
マルチスレッドに関して質問です。
多くのサンプルをネットで見させて頂いたのですが、基本的に呼び出し方法が
ソース内で宣言するタイプにHandlerを記載するタイプしか見当たりませんでした。

new Thread(new Runnable() {
}
0298デフォルトの名無しさん2012/07/02(月) 11:56:27.35
すみません、途中送信した上に別の問題も見つかったので(´・ω・`)
02992462012/07/02(月) 12:45:00.44
>>293
おお、データベース化出来そうな雰囲気ですね。

>>294
そうなんですよ。差分の取得方法が分からないので、
現在は起動時に全読み込みに戻してしてしまってます。
CursorAdapterも調べてみますね。ありがとうございます。
0300デフォルトの名無しさん2012/07/02(月) 13:12:40.57
申し訳ありません。SPモードメールについての質問させてください。
SPモードメールがプッシュ型のメール受信を行っているとのことで、
ttp://android-inf.com/archives/501
のページを参考に、WAP_PUSH_RECEIVEDをonReceiveで受信するように
BroadcastReceiverを継承したクラスを作成したのですが、インテント
を受信できませんでした。
※ネットワーク変更などのインテントは受信できていることは確認
 しているので、フィルターだけの問題かとおもっています。
SPモードメールのインテント受信を行うには、どのintent-filterを
指定すればよいでしょうか?

使用端末:sh-01d
android :2.3.5
03012972012/07/02(月) 13:18:06.19
マルチスレッドの話です。

インターネット上にあるサンプルだと大体が、ソース内でThreadを作ってそこにThradの中身を書いておりますが
個人的には分けたいと思っています。
その場合こう書けばいいのでしょうか?

//呼び出し
class main {
ThreadClass tc = new ThreadClass();
}

//スレッド
public class ThreadClass extends Thread implements Runnable
{
Handler hi = new Handler();

public void run()
{
hi.post(new Runnable() {
public void run () {
//処理
}
});
}
}

自分で確かめた結果だと現状Looper.prepare()部分でnot called呼ばれてないエラーが出てるので書き方として
あってるかが分からない現状です。
開発媒体がProcessingなので中々…
03022972012/07/02(月) 13:20:22.91
すみません、書いてからで申し訳ない。自己解決しました。

Handlerをnewする時にLooper.getMainLooper()を渡してやれば良いみたいです。
書き方としては問題ありませんでした
0303デフォルトの名無しさん2012/07/02(月) 13:25:47.69
どうなってんだよ…
0304デフォルトの名無しさん2012/07/02(月) 13:28:12.34
今、全裸です
0305デフォルトの名無しさん2012/07/02(月) 13:44:56.66
3行にまとめて
0306デフォルトの名無しさん2012/07/02(月) 13:48:49.31
>>305
Handlerのコンストラクタで引数なしだと、
作成されたスレッドのLooperが自動的に設定される。
スレッド側で作成するときはコンストラクタでメインのLooperを渡しておくこと。
03072972012/07/02(月) 16:10:35.72
別の問題が出てしまった。

実機・エミュ共に現状動作はするのだが、描画処理中は他の操作を一切受け付けなくなってしまった
(描画中、mainでの操作が出来ない)

添削した簡単なソース
http://ideone.com/v6HRo

現在のソースをHandler削除して、Javaで描画すれば動作は受け付けるのだが
Handlerの何が邪魔してるのだろうか?
0308デフォルトの名無しさん2012/07/02(月) 16:21:33.95
気の迷いが邪魔してるんだよ
無心になれ
0309デフォルトの名無しさん2012/07/02(月) 16:32:21.22
馬鹿には無理
03102972012/07/02(月) 16:36:59.34
馬鹿じゃなかったら質問スレに来ないと思うんだ
0311デフォルトの名無しさん2012/07/02(月) 16:39:16.72
うましか無理
0312デフォルトの名無しさん2012/07/02(月) 16:44:01.18
馬鹿だったら質問スレにすら来れないと思うんだ
03132972012/07/02(月) 16:47:27.12
その辺取り敢えず置いといて分かる、うましかの人はおらんのけ(´・ω・`)?
0314デフォルトの名無しさん2012/07/02(月) 16:52:11.12
>>313

MainLooperを使いまわしてるからじゃないの?
MainLooperを使うってことは、処理を描画スレッドで行うってことだから。

ThreadとHandlerとLooperの使い方は
LooperのJavadocにコードの例が載ってるから見るといい。

HandlerThreadでもいいと思うけど。
03152972012/07/02(月) 17:03:10.54
>>314
thx、考えてみる
0316デフォルトの名無しさん2012/07/02(月) 17:07:52.78
そこまでしてスレッドを別クラスに持たせる意味がわからん

スレッドとハンドラーの生成はメインで行なって、
ハンドラーへ渡すRunnableを描画処理等を持たせた別クラスにすればイイんじゃ?
0317デフォルトの名無しさん2012/07/02(月) 17:22:29.88
Eclipse IndigoにGoogle APIs Level13を使ってて、エミュで日本語キーボードが表示されないんだけど、質問するのここでいい?
いろんなところで日本語キーボードの設定方法を調べてたんだけど、結局できなくて困ってる。
「言語の入力 > 言語設定→言語を選択」で、Android全体の言語は「日本語(日本)」に設定できたんだけど、
「言語の入力 > キーボード→設定入力方法の設定 > Androidキーボード→有効な入力方法」の中に、「日本語のキーボード」とかそれらしいものが表示されないんだ。
分かる人がいたら教えてほしい。
0318デフォルトの名無しさん2012/07/02(月) 18:10:27.79
片山議員は参加者に囲まれながら、「民主党政権になってから、生活保護の不公平が見逃すことができないところに来ている。
外国人の不正受給に関しても、まずは日本人の、真面目に義務を果たしている人が優先。
今は特に、韓国なんてすごく豊かなんですから」と持論を展開し、

「私に対してもいろいろ嫌がらせがあったが、どこから来ているかはわかるんですよね。私たちの日本を愛するマグマの方が強いことを教えよう。
日本が正直者が報われる、本当に強い国にもう1度なれるように、私たちががんばりましょう」
と呼びかけると、参加者からは大きな拍手が起こった。

http://www.j-cast.com/2012/07/01137691.html?p=all
http://www.j-cast.com/images/2012/news137691_pho01.jpg
http://www.j-cast.com/images/2012/news137691_pho02.jpg

前
http://engawa.2ch.net/test/read.cgi/poverty/1341150152/
http://engawa.2ch.net/test/read.cgi/poverty/1341153256/
0319デフォルトの名無しさん2012/07/02(月) 22:23:38.51
>>313
今まさにServiceとThread使ってこねこねしている所なので
俺でも何かアドバイスとか出来るかなってソース見てみたが
そのソースでは何がやりたいのかさっぱりわからんちん

ごめんね、役立たずでごめんね
0320デフォルトの名無しさん2012/07/03(火) 08:58:37.04
韓国サムスン電子のタブレットPC「ギャラクシータブ」に続きスマートフォン「ギャラクシーネクサス」の米国での販売が差し止められた。
アップルの特許を侵害した可能性が大きいという理由だ。
特に「ギャラクシーネクサス」がアップルの特許を侵害したとされた技術は
サムスンの最新スマートフォン「ギャラクシーS3」にも一部適用されたことがわかり波紋が予想される。

http://japanese.joins.com/article/696/154696.html?servcode=300§code=300
0321デフォルトの名無しさん2012/07/03(火) 09:13:26.35
>>317
いま仮想デバイス作って起動してみたら普通に出てきたが
http://i.imgur.com/wpsBz.png
03222972012/07/03(火) 09:32:13.11
HandlerThread試してみたけどさっぱりです、もうちょいヒント下しあ
http://ideone.com/iw6D7
(仮)
class main と class ThreadClassは別ファイルとなります。
class mainで宣言して、描画処理をThreadClassに丸投げします
class mainでは、何を描画するかを選択します

main部分はAndroidではないので、Activityではないです
0323デフォルトの名無しさん2012/07/03(火) 09:34:12.95
えー、どうしよっかなー
0324デフォルトの名無しさん2012/07/03(火) 09:44:56.06
変数tcってThreadClassに渡す必要あるの
ThreadClass自身なのに
0325デフォルトの名無しさん2012/07/03(火) 09:53:59.59
>>321
マジか。
結局表示されなかったから、何とか実機を調達することにしたぜ・・・
0326デフォルトの名無しさん2012/07/03(火) 09:58:28.54
>>322
よくみたらそれじゃLooper設定されてないよ
ソース見れるなら親クラスのrunメソッド見てみるといいLooperをメンバに格納してるから
何が足りないかというと
super.run();
03272972012/07/03(火) 10:02:45.70
>>324
確かにthis.getLooper();で良かった

>>326
なるほど、super.run()・・・
ぐぐってくる
0328デフォルトの名無しさん2012/07/03(火) 10:03:06.58
Logcatでなんの例外が出てるかでも書きなよ

っていうことをなんで何回も言わせるのか
0329デフォルトの名無しさん2012/07/03(火) 10:07:55.49
>>327
ああ24行目にsuper.run();を書くといいよってことです
03302972012/07/03(火) 10:18:18.31
>>328
LogCat何て搭載していないんだ(Eclipseじゃない)
printStackTrace()だと、さっきのソースじゃ何もなしだった、そのまま停止
println("test");
hl = new Handler(so.getLooper());
println("test2");
でかこって、最初のtestだけ表示されてフリーズ
Handlerの中を空白にしたらtest2まではいったけどそのまま終了で処理入らない


>>329
�dクス、入れてみたらRuntimeException発生して
Can't Create handler inside thread that has not called Looper.prepre();
が出るようになって、Looperが呼ばれてないからハンドラ作れないって言われてしまった。
他の場所が悪そうなので思考中(´・ω・`)
0331デフォルトの名無しさん2012/07/03(火) 10:23:50.93
>>330
Looper.prepareは親run()がやってるから、実行できるのはスレッドごとに一回だけなので二度目以降やるとRuntimeExceptionが発生するよ
だからLooper.prepareを書く必要はない

HandlerThread#run()の中身参考に貼っとくわ
public void run() {
mTid = Process.myTid();
Looper.prepare();
synchronized (this) {
mLooper = Looper.myLooper();
notifyAll();
}
Process.setThreadPriority(mPriority);
onLooperPrepared();
Looper.loop();
mTid = -1;
}
03322972012/07/03(火) 10:37:23.24
すまん、色々と申し訳なかった。
super.run()を追加してからのエラーに関しては、テストで試してた処理がコンストラクタにいて、そいつが働いてエラーになってたので
本件とは関係無し。

で、その辺なのを抜いて
super.run();
println("test");
Looper.prepare(); // ある・なしの両方
↑これを試してみたのだけれど、super.run()がいるとThread側はその場でフリーズしてしまうぽい
main側は動作が出来てボタンを押すと、println("aiueo")みたいなのは出せるんだが、一回出してしまうと
main側も止まってしまう

ということで、またちょっと考えてみます(´・ω・`)
03332972012/07/03(火) 10:51:04.80
http://ideone.com/9PpEI

現在このような感じ、手間取らせて申し訳ない
0334デフォルトの名無しさん2012/07/03(火) 10:56:00.03
14行目のimplements Runnnable
消してみて

あとわかりやすいように20行目に
@Override
public void run()
って書いておいて
03352972012/07/03(火) 11:08:43.72
thx、特に動作変わらず
http://ideone.com/t3D3x
加筆修正
0336デフォルトの名無しさん2012/07/03(火) 11:14:13.36
個人でiphoneアプリ、Windowsアプリをマーケットに売って生き残れ

格安iPhoneEラーニング(学習動画多数あり)
http://tinyurl. com/7wj77om

コワーキングスペースJP
http://tinyurl. com/76vdrny
コワーキング帳
http://tinyurl. com/brzs486

WEBサーバーIIS Win2008ServerVPS SqlServer Oracle MySql 言語はマーケットで売れるメーカー製のみやる
ASP.net(C#)+管理EXEアプリ(C#)+iPhone C#のソースを出さなければWEBアプリの著作権も守れる

C#マーケット Windows8 Metroアプリ WindowsPhone Surface PS Vita Xbox360 iphone(mono使用)
iPhoneマーケット iPhone iPad 予定 iTv iCar i (家電製品)

地方に安い土地を買いコンテナ型の格安高性能オフィスを建て(300万〜500万)
レンタル自習室&シェアオフィス・コワーキングで収入を得ながらそこでアプリを開発する
http://tinyurl. com/7pb2yaa
http://bit. ly/iLIpJa
0337デフォルトの名無しさん2012/07/03(火) 11:23:16.29
>>335
ごめ
よくわからなくなったから自分で書いてみた
http://ideone.com/Gmfoo
求めてるものかどうかわからないが
03382972012/07/03(火) 11:58:24.89
>>337
thx、これを元にちょっと弄ってみたい。
main側での呼び出しは増やしたくないんだよね。
というのもmain側はProcessingで作成されてて、HandlerThreadを宣言すると

シンボルを見つけられません。
[java c] シンボル:メソッド HandlerThread(java.lang.String)
でエラーになるのだ(´・ω・`)import出来るんだけどね…
0339デフォルトの名無しさん2012/07/03(火) 12:33:40.23
>>330
> LogCat何て搭載していないんだ(Eclipseじゃない)

logcatはEclipseの機能じゃない
adbさえあれば見れる
03402972012/07/03(火) 12:53:21.37
http://wikiwiki.jp/android/?Android%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A4%AB%A4%E9logcat%A5%B3%A5%DE%A5%F3%A5%C9%A4%F2%BC%C2%B9%D4%A4%B9%A4%EB

これか(´・ω・`)!導入出来るかちょっと試しつつ、色々弄ってみる
0341デフォルトの名無しさん2012/07/03(火) 20:38:40.34
まだやってたのかコレw
>>297がやりたいことって

class main{
// 描画する絵を選択する処理
// int i = checkInputKey(); //入力されたキー番号を取得
 Hoge hage = new Hoge();
hage.setDrawPattern(i); //描画するパターンiを渡す
}

public class Hoge{
private final HandlerThread mThread;
private final Handler mHandler;
public Hoge() {
mThread = new HandlerThread("hage");
mThread.start();
mHandler = new Handler(mThread.getLooper());
}
public void setDrawPattern(int i){
switch(i){
case 1:
   mHandler.post(new Runnable() {public void run () { /* 描画処理1 */}});
break;
case 2:
// 以下略
}
 }
}

こういうことじゃないのけ?
03422462012/07/03(火) 20:48:42.45
とりあえず試しにこんなメソッド作って、曲を追加してからプログラムを走らせたら、
見事、データベース曲が追加されたんだが、TITLE以外に、ALBUM、ARTIST、IDと全てのカラムが
データベースに追加されたんだけどどうしてですかね?

public void checkUpdate(){
ContentResolver cr = getApplicationContext().getContentResolver();
c = cr.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[]{
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media._ID},null,null,MediaStore.MediaColumns.DATE_ADDED + " DESC");

c.moveToFirst();
String str1 = c.getString(c.getColumnIndex(MediaStore.Audio.Media.TITLE));

if(str1 != null){

DatabaseOpenHelper dbHelper = new DatabaseOpenHelper(getApplicationContext());
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("title", str1);
db.insert("songTrack", null, values);
db.close();
}
}
03432462012/07/03(火) 20:55:54.30
それと上記コードで後から追加された曲が全てデーターベースに追加されました。
whileもforも使ってないのに。どういう理論か分かる方いらっしゃいます?
やりたいことが全部出来てしまったんで嬉しいんですけど気味が悪くて…。
0344デフォルトの名無しさん2012/07/03(火) 21:25:13.82
DBのスキーマも書かずにどうしろと?
0345デフォルトの名無しさん2012/07/03(火) 21:27:27.09
そろそろスレ汚してる勢いだな
03462462012/07/03(火) 21:44:28.22
>>344
すみません。甘え過ぎなのでこれ以降自粛します。

SqlOpneHelper側

@Override
public void onCreate(SQLiteDatabase db) {
db.beginTransaction();
try{
StringBuilder createSql = new StringBuilder();
createSql.append("create table " + TABLE_NAME + " (");
createSql.append(COLUMN_ID + " integer primary key,");
createSql.append(COLUMN_TITLE + " text,");
createSql.append(COLUMN_ARTIST + " text,");
createSql.append(COLUMN_ALBUM + " text,");
createSql.append(COLUMN_ALBUM_ART + " text");
createSql.append(")");
db.execSQL( createSql.toString());
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
0347デフォルトの名無しさん2012/07/03(火) 21:48:48.20
さすがに何度もソースだらだら書かれるとうざいわーw
1回ぐらいなら大目に見るけどさ
0348デフォルトの名無しさん2012/07/03(火) 21:52:03.87
ソースうpするサイトとかあるしそこ使えよなー
なんで私物化してんのこいつ
0349デフォルトの名無しさん2012/07/03(火) 21:59:24.20
ちゃんとテーブル内のデータクリアしてから試した?
目の錯覚じゃね
0350デフォルトの名無しさん2012/07/03(火) 22:03:25.69
>>342
あと、MediaStoreって便利なコンポーネントがあるのに
自前でテーブル持つメリットがいまいちわからないんだが必要?
>>342のCursor使ってCursorAdapter構築してリストビューに反映させればいいんでないかと
SD抜き差しでMediaStoreが更新されるけどそのたびに自前のテーブルも更新しなきゃいけないのは面倒でしょう
0351デフォルトの名無しさん2012/07/03(火) 22:05:07.86
まーソース示さないとできない質問もあるだろうけど
一部プログラマからは家に帰ってもコード見せるのかよと反発かうかもなw
0352デフォルトの名無しさん2012/07/03(火) 22:34:13.71
ていうかこれぐらい調べられると思うんだけどな
ぐぐってもわからなくて最終手段としてここで聞くもんじゃないの?w
0353デフォルトの名無しさん2012/07/03(火) 22:36:43.50
ぐぐってわかる程度の事はすぐ回答が来ますが
ぐぐってもわからないほどのことは、ここの人たちに答えられたためしがないので
最初にここで聞くようにしています
0354デフォルトの名無しさん2012/07/03(火) 22:39:54.69
ぐぐってもわからなくてお手上げのときにここで質問をしたら教えてくれた
0355デフォルトの名無しさん2012/07/03(火) 22:42:24.73
とりあえずここで質問してからぐぐってる
03562462012/07/03(火) 22:46:17.82
>>347,348
すんません。自粛しますw

>>349
錯覚でしたw でも何でこのコードで複数のデータがデータベースに登録されるのかは依然謎ですけどw

>>350
実際、ContentProviderの併用で同じこと全部できるし、そちらの方がおっしゃる通り簡単なんですが、
アーティスト欄でアルバムが何枚あるかとかタイトル欄で曲の再生時間はいくつあるとか
毎回計算して表示してしまうと、曲数が多くなれば多くなる程動作面で不安が出てくると思うんです。
なので少しでも処理を軽くするためのデータベース化なんですね。
殆どのミュージックプレイヤーがデータベース化しているのもその為なのかと。

>>351
そうですよね。気をつけます!
0357デフォルトの名無しさん2012/07/03(火) 23:05:16.55
謎で終わらせるんじゃなくてちゃんとデバッグしてよ
0358デフォルトの名無しさん2012/07/04(水) 00:00:35.41
ヤめてくれw
0359デフォルトの名無しさん2012/07/04(水) 00:31:44.59
OverScrollerを実装してみたんだけど、
ソニエリ系端末とサムソン系端末では動きが全然違うんだな。
0360デフォルトの名無しさん2012/07/04(水) 01:05:07.33
教えてください。
AlarmManagerを使って定期的にアプリを起動しているのですが
起動時間に別のアプリを操作していた場合、裏で起動するというような
事はできないでしょうか?

0361デフォルトの名無しさん2012/07/04(水) 01:17:16.38
>>360
サービスにすればいいんじゃね?
0362デフォルトの名無しさん2012/07/04(水) 01:27:26.99
サービスサービスゥ
0363デフォルトの名無しさん2012/07/04(水) 07:53:00.87
AlarmManager&WakeLockの不安定さ・・・
AlarmManagerが悪いのか、WakeLockが悪いのか、機種が悪いのか・・
でもサービスにすると「常駐死ね☆1」とかあるしなぁ
0364デフォルトの名無しさん2012/07/04(水) 08:27:43.76
>>363
おおかたbroadcastハンドラの外でlock取ろうとしてるんだろ
タイマーで直接サービス上げるのも御法度
03652972012/07/04(水) 10:26:31.09
logcatはEclipse起動したままエミュ起動させたらEclipseの方が勝手に読み取って出まくってたワロ

>>341
神いわゆるGOD、うまくいくようになりますた。
後は他に影響があった操作を直すだけですみそうです。
次からThread分けるときはこれを応用させて頂きます(;´Д`)ハァハァ
0366デフォルトの名無しさん2012/07/04(水) 10:45:30.74
>>365
> これを応用させて頂きます

いや、お前がやらなければならないことは、
なぜお前のやり方がとダメで、>>341のやり方なら上手く行くのか、
そこらへんをきちんと理解することだ

そうしないと、また別のところで同じようにドはまりするだけだよ
03672972012/07/04(水) 10:53:51.28
>>366
思ったことはstart()さした中でやってるからだと

初期のpgでは

HandlerThread test = new HandlerThread("test")
test.start();
で、中身でthis.getLooper()をやってたわけですが

図で書くと

test -----------------
| handler
|
|____________________________________

今回の場合は

test --------------------
|
|__________________________________

handler-----------------
|
|_________________________________


中身にhandlerを書いたらうまくLooperをキャッチできていないのかなと
03682972012/07/04(水) 10:56:31.28
で、呼び出し側としては
Thread作成→スタート→Handlerという流れにしないといけないわけで、Thread側に継承させたら
Handler内部の操作が出来ないしと うまく説明できませんが(;´Д`)

であればThread作成用のClassを作って、内部で同じようなことをやらせれば良いかと
03692972012/07/04(水) 11:00:58.67
なので最終的にclassを分けて使う場合は


呼び出されるクラス----------------------
|
| thread-------------------------------
| |
| | Looper獲得用
| |______________________________________________________
|
| handler------------------------------
| | GUI部分の処理
| |  public void run() { 
| | スレッドに任せたいGUI処理
| |____}_____________________________________________
|
| その他関数
|________________________________________________________

こんなメソッドを作るみたいな
0370デフォルトの名無しさん2012/07/04(水) 11:01:48.50
理解しろとは言ったけど、それをここで書けとは言ってねぇえええええええぇ
03712972012/07/04(水) 11:12:50.24
( ´゚д゚`)すまん
0372デフォルトの名無しさん2012/07/04(水) 11:15:10.24
顔文字付けないと書き込めない病気か
0373デフォルトの名無しさん2012/07/04(水) 11:16:33.12
次からは297専用スレを立ててやれ。な?
0374デフォルトの名無しさん2012/07/04(水) 11:21:48.06
お前らの無駄な書き込みでスレがどんどん消費されていく
0375デフォルトの名無しさん2012/07/04(水) 12:15:17.01
>>361
ありがとうございます。
サービスで常駐させて時間のチェックをし、時間がきたらIntentで
アプリを起動させるということですね。
その場合、「起動時間に別のアプリを操作していた場合、裏で起動する」
という部分はどのように実装すればよいのでしょうか?
0376デフォルトの名無しさん2012/07/04(水) 13:12:05.16
>>375
その「裏で起動しておこなっていた処理」をサービスにしろ、ってことじゃねぇの?
0377デフォルトの名無しさん2012/07/04(水) 13:16:04.96
サービス残業
0378デフォルトの名無しさん2012/07/04(水) 13:31:05.02
アプリ間でデータを共有したい(かつ、既知のアプリ以外には見せたくない)場合、

・ユーザーIDの共有
・コンテントプロバイダ
・ファイルパーミッションの変更(+SharedPreference)
・データベースファイルのアクセス権限を利用

あたりがあることを知ったのですが、いまいち使い分けが分かりません。
多少面倒な事や、層があることで僅かながら呼び出しコストがあるかもしれない(想像です)を
除けば、コンテントプロバイダ+署名共有が良さそうに思うのですが、
他に理由があったりしますでしょうか?今のところ、データは簡単な文字列が幾つか、程度ではあるのですが。
0379デフォルトの名無しさん2012/07/04(水) 15:27:39.00
AlphaAnimationはフェードインかアウトの一方通行ですよね?
フェードインしてフェードアウトとかすることはできますか?
0380デフォルトの名無しさん2012/07/04(水) 15:31:51.24
AnimationSet に AlphaAnimation を 2 個入れるとか
0381デフォルトの名無しさん2012/07/04(水) 16:03:43.14
アクティビティ切り替え時のアニメーションを左から右、バック時は右から左へとしたいんですが、
参考サイトみたいなのないですか?FlipperViewとかならそこらへんに沢山あるんですけど。
0382デフォルトの名無しさん2012/07/04(水) 18:29:14.99
トップダウン設計意識してやってみたけど難しすぎて結局ボトムアップになっちゃうビクンビクン
■ このスレッドは過去ログ倉庫に格納されています