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

Androidプログラミング初心者質問スレ Part4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/11/19(金) 16:33:21
前スレ
Androidプログラミング初心者質問スレ Part3
http://hibari.2ch.net/test/read.cgi/tech/1286357268/
Androidプログラミング初心者質問スレ Pert2
http://hibari.2ch.net/test/read.cgi/tech/1282716370/
Androidプログラミング初心者質問スレ
http://hibari.2ch.net/test/read.cgi/tech/1278560954/

関連スレ
【Google】Androidアプリ作成part6
http://hibari.2ch.net/test/read.cgi/tech/1286555951/
0041デフォルトの名無しさん2010/11/21(日) 23:02:21
(´・ω・`)クソスレ立てんなハゲ
0042デフォルトの名無しさん2010/11/21(日) 23:20:05
>>40
だよねー…
0043デフォルトの名無しさん2010/11/21(日) 23:25:00
俺なんか、開発環境と整えて本買ったのにやる気ないし
0044デフォルトの名無しさん2010/11/21(日) 23:57:52
>>39
>>40
ありがとうございます
とりあえず入門書買ってやってみます
0045デフォルトの名無しさん2010/11/22(月) 02:30:38
>>43
おっさんの事なんて誰も聞いてないよ?
0046デフォルトの名無しさん2010/11/22(月) 03:35:56
>>45
お前もさっさと消えろ。
0047デフォルトの名無しさん2010/11/22(月) 12:11:56
rooted 2.1のxperia(so-01b)で、
adb shell してsuになってもsqlite3コマンドがnot foundになるんだけど、
解決方法はありますか?ドコモファームの1.6でも同様にnot foundで使えなかった。
手持ちのht-03aではadb shellからsqlite3使えてるんですが・・・
0048デフォルトの名無しさん2010/11/22(月) 15:14:52
<LinearLayout>
<TextView />
<TextView />
</LinearLayout>

のようなレイアウトで2つのTextViewを両方とも常にmarqueeでスクロールさせ続けることができません。
TextViewにはそれぞれ(marqueeに関係ありそうなものとしては)
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:focusable="true"
android:focusableInTouchMode="true"
を指定してありますが、フォーカス(?)があるテキストしかスクロールしてくれないです。
参考になるURLやコードなどを教えていただけませんでしょうか。
0049デフォルトの名無しさん2010/11/22(月) 16:03:25
>>48
Marqueeはフォーカスがあるテキストをスクロールさせるものだから、
複数テキストにMarquee指定しても意味がなかったと思う
自前でアニメーション設定すれば良い
0050デフォルトの名無しさん2010/11/22(月) 18:18:06
>>49
なるほど、もともとそういうものなんですね。
アニメーションは思いつきませんでした。やってみます。
0051デフォルトの名無しさん2010/11/22(月) 18:20:15
ライフサイクルの質問です。

アプリがアクティブの状態で電源ボタンを押すと、

onDestroy()->onCreate()

になってしまい、再起動がかかった直後の状態で、誤操作ロック解除待ちの画面に遷移します。
アクティブでなければ、電源ボタンを押してもこのような動作は起こらないのですが、
アクティブで電源ボタンを押しても、onDestroy()が呼ばれない方法はないでしょうか?


SDK公式の状態遷移表を見ても、
onDestroy()が呼ばれた段階で完全終了ということのようなのですが、謎です。

機種はXPERIAです。
0052デフォルトの名無しさん2010/11/22(月) 18:51:28
うーんどうやら、考え方がおかしかったみたいで、

onSaveInstanceState()
onRestoreInstanceState()

で自分で管理するようです。
0053522010/11/22(月) 20:57:52
あれからがんばってsave&restore処理を書いているのですが、
プログラムの腕が低くてきついです。

作っているのはGLSurfaceViewを使ったゲームなのですが、
皆さんまじめに復帰処理書いているのでしょうか?

Androidマーケットに上がっているのは結構ちゃんと復帰するの多いし、みんな凄いなぁ。
0054デフォルトの名無しさん2010/11/22(月) 23:24:26
他のアプリとかによってAlarmManagerにセットされている
すべての設定を取得することってできる?
0055デフォルトの名無しさん2010/11/22(月) 23:41:36
>>53
中断、再開系の処理はonPause,onResumeでいいんじゃないかな
0056デフォルトの名無しさん2010/11/23(火) 00:04:43
>>55
HOMEボタンを押す程度の動作の場合はそれだけで復帰できるのですが、
電源ボタンで閉じるとonDestroy,onCreateが呼ばれてしまうようです・・・orz
0057デフォルトの名無しさん2010/11/23(火) 01:18:46
IS01でサブカメラ使うにはシャープのアドオンを使わねばならず、使うと他の端末では
インストール時に蹴られるそうですけど、全画面の
Class<?> sgManager = Class.forName("jp.co.sharp.android.softguide.SoftGuideManager");
〜
と同じ様に、動的にエラーが出たら使用しない様な使い方は出来ないのでしょうか。
0058デフォルトの名無しさん2010/11/23(火) 02:39:19
>>57
AddOn使って呼び出してるメソッドをリフレクションで呼んでみたら?
0059デフォルトの名無しさん2010/11/23(火) 03:23:00
それはないwwwwwww
0060デフォルトの名無しさん2010/11/23(火) 03:44:56
CameraExは呼べ無かったんですけど、アドオンのjarを解凍してclassをバイナリエディタで見てみたら
jp/co/sharp/android/hardware/CameraEx
java/lang/Object
jp/co/sharp/android/hardware/Camera_Ex
と並んだ文字列が目に止まりますた…文字列の流れから察するにCameraExはCamera_Exを
返してるだけなのかな。

今日はもうおねむなので明日Camera_Exで試してみます。
0061デフォルトの名無しさん2010/11/23(火) 12:03:38
Camera_Exその他色々試してみたもののやっぱりダメでした…
0062デフォルトの名無しさん2010/11/23(火) 12:33:48
はい次
0063デフォルトの名無しさん2010/11/23(火) 12:43:34
すまん、諦めきれずもう一度書いてみたらCamera_Exで通った!
0064デフォルトの名無しさん2010/11/23(火) 12:49:25
よかったねー
0065デフォルトの名無しさん2010/11/23(火) 16:20:22
XMLでpreferenceを作っているんだけど、
EditTextPreferenceの入力で改行を制限したいんだけど、
属性がないみたいなんだけど・・・
もしかして、自分でレイアウト組まないとダメなん?
0066デフォルトの名無しさん2010/11/23(火) 16:54:00
android:inputType="text"
0067デフォルトの名無しさん2010/11/23(火) 17:52:02
>>66
サンクス・・・ずっと
「android:inputType="Text"」と書いてた。死ねよ俺。
しかもeclipseの補助入力(?)で「:」まで打って出るリストに
含まれてないから、属性が存在しないのかと思ってたわ。
ホントありがとう。
0068デフォルトの名無しさん2010/11/23(火) 18:46:26
よかったねー
0069デフォルトの名無しさん2010/11/23(火) 19:25:17
>>67
=まで打ったら候補にあるよ<text
0070デフォルトの名無しさん2010/11/23(火) 21:38:18
Androidのアプリの構造がさっぱりなのですが、某有名ファイラーの様な物は
フォルダを移動する度に新しいアクティビティで開いて、戻るボタンを押して
戻らない限り延々ネストしているのでしょうか?
0071デフォルトの名無しさん2010/11/23(火) 21:45:05
設定画面とか同一アクティビティでレイアウトを置き換えるのでは無く、画面毎にアクティビティを用意して、
とにかくアクティビティ間を移動するのがAndroid的な構造なのでしょうか。
0072デフォルトの名無しさん2010/11/23(火) 22:42:52
そうだね、ブロテインだね
0073デフォルトの名無しさん2010/11/23(火) 23:14:34
寝ているWifiを起こすにはどうしたらいいんでしょうか?

ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
wm.enableNetwork(0, false);
wm.reconnect();
}
としてみたんですが一回寝ちゃうとなかなか起きてくれないです。
5分間隔くらいのときは次回にはWifiは起こされてるみたいなんですが
15分置きくらいだと全然起きてくれないです。

スリープ中に定期的にネットにアクセスさせるには
定石的にはどうやってるんでしょうか?

0074デフォルトの名無しさん2010/11/23(火) 23:18:11
ちなみに>>73はAlarmManager→BroadcastReceiver→Serviceで
onStart()のThread中で処理してます。
WakeLockはレシーバー中とServiceのonCreateもしくはonStartでしてます。
0075デフォルトの名無しさん2010/11/23(火) 23:23:45
逆コンパイルしたいんですが、やり方とかツールを教えてくらはい
0076デフォルトの名無しさん2010/11/23(火) 23:48:57
>>75 ほいよ
http://www.dalvikvm.com/
あとは、バイナリエディタと、紙と鉛筆、もしくはテキストエディタでがんばれ
0077デフォルトの名無しさん2010/11/24(水) 00:46:54
>>70
ListView更新してるだけだと思うぞ
0078デフォルトの名無しさん2010/11/24(水) 01:54:31
>>77
ウィンドウアニメーションonで、画面がスクロールする所は新しいアクティビティを開いてると
思って良いのでしょか?
0079デフォルトの名無しさん2010/11/24(水) 07:17:16
Activityを起動してるかどうかは開発環境繋いでログ見てればすぐわかるんじゃないの
0080デフォルトの名無しさん2010/11/24(水) 09:09:14
>>75
つ undx
0081デフォルトの名無しさん2010/11/24(水) 14:46:36
マルチライン(高さは5行分ある。)のedit text で、
一行だけ表示したら垂直方向にセンタリングされるんだが、一行目から表示するようにするにはどうすればいいですか?
0082デフォルトの名無しさん2010/11/24(水) 15:00:03
>>81
自己解決。
gravityでした。
お騒がせスマンです。
0083デフォルトの名無しさん2010/11/24(水) 18:05:15
>>82
あるあるw
0084デフォルトの名無しさん2010/11/24(水) 23:38:15
アクティビティ1からstartActivity(intent);で
アクティビティ2を起動して、
アクティビティ2の画面から両方のアクティビティを終了させるにはどうすればいいですか?
0085デフォルトの名無しさん2010/11/25(木) 05:27:47
>>84
intentで
0086デフォルトの名無しさん2010/11/25(木) 07:11:47
え?
0087デフォルトの名無しさん2010/11/25(木) 08:25:59
両方のfinishを呼べば良い
0088デフォルトの名無しさん2010/11/25(木) 08:26:18
>>84
ForResultの方を使えばいいんじゃない?
0089デフォルトの名無しさん2010/11/25(木) 11:14:56
>>87
>>88
ForResultの方使って戻り値使ってできました!
ありがとうございます!
0090デフォルトの名無しさん2010/11/25(木) 11:21:14
Contextを変数に保持しておいて、
任意のタイミングでgetResources.openRawResource(int)を呼んでも上手く画像が読み込めないのですが、
起動したActivityと別のスレッドだと上手く動かない、と言ったことはあるのでしょうか。

GLSurfaceView.RendererのonSurfaceCreatedから同じ処理を呼ぶと上手く動くのですが・・・。
0091デフォルトの名無しさん2010/11/25(木) 13:13:27
ACTION_SCREEN_ONとACTION_SCREEN_OFFのアクションは
必ず交互にやってくるという保証はあるのでしょうか?
0092デフォルトの名無しさん2010/11/25(木) 15:37:53
環境変数で、Pathに自分のSDK入れたC:\android\tools;を追加したのですが、
試しにadbって打ってみても認識されません

C:\android\toolsに移動してからadb叩くと普通に動くのに
なんででしょう?昔javaでもおなじようなことあった記憶ある・・・・・
0093デフォルトの名無しさん2010/11/25(木) 16:10:29
>>90
できるはず

>>92
できるはず

>>91
しらん
0094デフォルトの名無しさん2010/11/25(木) 16:19:43
>>92
toolsの後に\入れてみ?
0095デフォルトの名無しさん2010/11/25(木) 19:02:07
>>92
コマンドプロンプト再起動したか?
0096デフォルトの名無しさん2010/11/25(木) 20:06:58
>>92
pathコピペして晒してみ
0097デフォルトの名無しさん2010/11/25(木) 20:09:25
>>90
OpenGL側が描写できるスレッド決まってんじゃなかったっけ?
0098デフォルトの名無しさん2010/11/25(木) 21:30:06
androidのエミュレータを実行したところ、ウインドウが閉じません。
PCのシャットダウンもできず、強制電源OFFになりました。
×WindowsXP ProSP3(閉じない)
○Win Vista Home(閉じた)
過去ログ見てもみつからなかったのですが、解決策がありましたら
教えてください。
0099デフォルトの名無しさん2010/11/25(木) 22:18:53
それじゃあ質問の意味がわからんわ
0100デフォルトの名無しさん2010/11/25(木) 22:20:36
>>98
Mac に買い換えろ
0101デフォルトの名無しさん2010/11/25(木) 22:28:16
すいません。
WindowsXPがメインの端末なのですが、エミュレータは起動し、
動作は確認できるのですが、右上の×で閉じようとしても
ハングしているような感じになり閉じなくなります。
start emulatorでウインドウを分けても同様です。
何か掴んでいるのだと思うのですが、logもなく特定できません。
>>100
Vistaだと動くのですが起動まで100秒程かかり厳しいです。
0102デフォルトの名無しさん2010/11/25(木) 22:29:23
間違えました。
>>101
100秒⇒200秒
0103デフォルトの名無しさん2010/11/25(木) 22:31:58
低スペだとんなもんかもな、初回起動はとにかく遅い
PC買い換えるか実機買え
0104デフォルトの名無しさん2010/11/25(木) 22:38:40
うち早くて5分、遅い時は30分経っても起動せず閉じて再実行するけど。
0105デフォルトの名無しさん2010/11/25(木) 22:39:48
やはり他に事象ありませんか…
>>103
買い換えるのも厳しいので、とりあえずvistaで頑張ります…。
0106デフォルトの名無しさん2010/11/25(木) 22:42:54
>>104
起動しないのなら調査のやりようがあるのですが、、
起動して動作するがウィンドウが閉じなくなるのです。
端末再起動になるので、怖くてエミュを使用できません…
0107デフォルトの名無しさん2010/11/25(木) 22:46:06
>>106
CPUは?メモリ容量は?
Pen4でめもり512Mとかだったら、買い換えろとしか言い様が無いが
0108デフォルトの名無しさん2010/11/25(木) 22:52:55
>>107
ありがとうございます。
XP:T7700 2.4GHz メモリ2G
VISTA:T7500 2.2GHz メモリ2G
となってますが…
0109デフォルトの名無しさん2010/11/25(木) 22:54:08
>>107
まさに俺
0110デフォルトの名無しさん2010/11/25(木) 23:38:28
SoundPoolってどうやって使えばいいのでしょうか?
どこにどう書けばいいのか分かりせん・・・orz
0111デフォルトの名無しさん2010/11/26(金) 00:42:30
eclipseのjavaで、androidとarduino間をbluetoothを使って通信するアプリを
作っているのですが、どうもうまくいきません・・・。

connectのところがうまく言っていないみたいなのですが、sampleに入っている
bluetoothchatを使ってもうまくconnectしません。

android・android間とandroid・arduino間では処理がどのように変わるのか教えて
ほしいです。

分かりにくかったらコードを載せますので宜しくお願いします。
0112デフォルトの名無しさん2010/11/26(金) 01:05:54
>>107
VirtualBoxでfroyo使うと快適
0113902010/11/26(金) 09:05:18
>>97
ContextではなくOpenGLの方でしたか。
描画処理自体は起動したActivityと同じスレッドで行っていますが、
テクスチャ座標の設定などを別スレッド側で行おうとしたのが原因でしょうか・・・。

早速直してみたいと思います。ありがとうございました。
0114デフォルトの名無しさん2010/11/26(金) 11:09:55
教えて頂きたいです。
市場にある携帯のAndroidのバージョンは1.6 2.1 2.2
とありますが
例えば、自分がビルドパス2.2で作成したプログラムを
マーケットにあげるとき
DLする側のAndroidが1.6だった場合どうなるのでしょうか?
「貴方の端末には対応していないプログラムです」とマーケット側が判断してくれるのか
とりあえずDLしてから携帯のエラーで「バージョンが違うため起動できませんでした」
となるのでしょうか?
0115デフォルトの名無しさん2010/11/26(金) 11:14:10
ちゃんとバージョンを登録しておけば、バージョン1,6からはマーケットに表示されないはず
0116デフォルトの名無しさん2010/11/26(金) 11:21:40
>>115
お早いレスありがとうございます!
つまり、1.6 2.1 2.2の人に使ってもらいたい場合は
ビルドパス1.6で製作し始めてマーケットに登録する際に
1.6 2.1 2.2でビルドした三種類のアプリをそれぞれ
バージョン登録して登録すれば良いと言うことでしょうか?

あと、sage忘れていましたすみません。
0117デフォルトの名無しさん2010/11/26(金) 13:07:27
>>116
マニフェスト弄った事無いの?
0118デフォルトの名無しさん2010/11/26(金) 13:22:32
>>117
マニフェストは
デバッグを可能にするためにしかまだいじったことないです。
Androidプログラミングもこの間GalaxySを手に入れて始めました
アプリ自体はhallo worldとセンサーの結果を画面に表示させるものしか作れていません。

親がクレジットカード大嫌いでクレジットカードが持てないので
マーケットの仕組みが分からないんです。
でもいずれはマーケットへの投稿を目指してプログラミングしていきたいです。
0119デフォルトの名無しさん2010/11/26(金) 15:02:56
>>118
がんば
0120デフォルトの名無しさん2010/11/26(金) 17:52:37
のっけからつまずいてしまったんですが、エミュレータ内でアプリが起動しません
つД`)・゚・。・゚゚・*:.。..。.:*・゚

eclipseで新規プロジェクトとしてAndroidプロジェクトを選択し、ビルドターゲットにAndroid2.1-Update1
サンプルでSkeletonAppとして、プロジェクトを作成しました。
パッケージ・エクスプローラからSkeletonActivityを選択してAndroidアプリケーションとして実行。
エミュレータが起動して来ますが、ロックを解除してもSkeletonAppが起動しません。

[2010-11-26 17:26:05 - SkeletonActivity] Android Launch!
[2010-11-26 17:26:05 - SkeletonActivity] adb is running normally.
[2010-11-26 17:26:05 - SkeletonActivity] Performing com.example.android.skeletonapp.SkeletonActivity activity launch
[2010-11-26 17:26:05 - SkeletonActivity] Automatic Target Mode: launching new emulator with compatible AVD 'avd_t7'
[2010-11-26 17:26:05 - SkeletonActivity] Launching a new emulator with Virtual Device 'avd_t7'

特にコンソールにエラーは吐かれません。
Windows7(64bit) + eclipse3.6.1(64bit) + JDK6
どんなミスをやらかしているんでしょうか?
0121デフォルトの名無しさん2010/11/26(金) 18:55:02
手順はそれでいいはず。
初回起動は失敗する時あるから、もう1回実行する事はあるけどね。
0122デフォルトの名無しさん2010/11/26(金) 18:56:14
あとエミュレータは起動が遅い
01231202010/11/26(金) 19:06:14
>121
何回起動し直してもダメみたいです。

>122
起動してから10分程度放置してみたりもしたのですが……。

いきなり詰んだ……(ノД`)シクシク
0124デフォルトの名無しさん2010/11/26(金) 19:25:33
>>123
一からやり直してみるんだな
0125デフォルトの名無しさん2010/11/26(金) 19:31:50
>124
(>Д<)ゝ”イエッサ!!
eclipseとsdk消しちゃいます。
01261202010/11/26(金) 22:39:49
うーん、全然ダメです。
よもやと思って、FirewallもOFFにしてみても駄目。

ふと疑問に思ったんですが、一回エミュレータ起動してしまえば、そのまま実行ボタン押したら連続デバッグってできるんでしょうか?
0127デフォルトの名無しさん2010/11/26(金) 22:43:44
AndroidManifest.xmlにLAUNCHER指定のアクティビティあるよね?
0128デフォルトの名無しさん2010/11/26(金) 22:49:38
エミュレータは1度起動したら、起動しっぱなしでok
01291202010/11/26(金) 22:50:07
>127
ありますし、エミュレータ起動時に明示的に指定してもダメでした。

エミュレータをコマンドラインから起動して、adb shellしてみました。
error: device not found
な、なんぞこれ?
01301202010/11/26(金) 22:54:35
>128
エミュレータ起動しっぱなしで、もう一回実行してみました。

[2010-11-26 22:53:17 - SkeletonActivity] Android Launch!
[2010-11-26 22:53:17 - SkeletonActivity] adb is running normally.
[2010-11-26 22:53:17 - SkeletonActivity] Performing com.example.android.skeletonapp.SkeletonActivity activity launch
[2010-11-26 22:53:17 - SkeletonActivity] Automatic Target Mode: launching new emulator with compatible AVD 'avd_t7'
[2010-11-26 22:53:17 - SkeletonActivity] Launching a new emulator with Virtual Device 'avd_t7'
[2010-11-26 22:53:17 - Emulator] emulator: エラー: the user data image is used by another emulator. aborting

何故か、エミュレータを新しく起動しようとして失敗。
0131デフォルトの名無しさん2010/11/26(金) 23:01:00
ファイアウォールにブロックされてるとか・・・?
0132デフォルトの名無しさん2010/11/26(金) 23:01:47
いや、OFFにしてもだめって書いてあったな、すまん
01331202010/11/26(金) 23:02:05
>131
FirewallはOFFです。
実機には繋がるんですけどねぇ……。
0134デフォルトの名無しさん2010/11/26(金) 23:07:30
-port でポート番号変えてみるとか・・・telnet でつないでみるとか・・・
0135デフォルトの名無しさん2010/11/26(金) 23:07:52
グーグルのサイトにEclipse 3.6 は使わないで 3.5 を使って下さいって書いてあるのに
3.6 使う人ってなんなの?馬鹿なの?
01361202010/11/26(金) 23:08:18
adbがイカれんのかー?と、adbのプロセスを殺す。
eclipse側のコンソールで

[2010-11-26 23:06:22 - DeviceMonitor]Adb connection Error:既存の接続はリモート ホストに強制的に切断されました。
[2010-11-26 23:06:23 - DeviceMonitor]Connection attempts: 1
[2010-11-26 23:06:25 - DeviceMonitor]Connection attempts: 2
[2010-11-26 23:06:27 - DeviceMonitor]Connection attempts: 3
[2010-11-26 23:06:29 - DeviceMonitor]Connection attempts: 4
[2010-11-26 23:06:31 - DeviceMonitor]Connection attempts: 5
[2010-11-26 23:06:33 - DeviceMonitor]Connection attempts: 6
[2010-11-26 23:06:36 - DeviceMonitor]Connection attempts: 7

んー、一応繋がってたって事なんでしょうか???
01371202010/11/26(金) 23:10:57
>135
あー、ホントですね。
というか、eclipse使わなくてエミュレータ単独 + adb でも、ちゃんと動かないですorz
01381202010/11/26(金) 23:19:42
android.bat
で、エミュレータ起動

adb kill-server
adb start-server
adb shell
で、繋がったーっ

ってことは、
eclipseから実行
adb kill-server
adb start-server
ラ━━━━━━ヽ(´∀`ヽ)━━━━━━ン !!!!!

何、この儀式w
01391202010/11/26(金) 23:35:42
エミュレータは終了したら、手作業でadb kill-serverする必要性があるんでしょうか?
adbって、接続切れたら二度と再接続に行かない?
それとも、私の環境が糞なだけですか?
0140デフォルトの名無しさん2010/11/27(土) 00:27:44
エミュレータを直接起動する前後とeclipseからエミュレータ起動する前後のプロセスを監視してみたら?

あと、eclipse立ち上げる前後のプロセスも監視しとけ
それとサービスやプロセスで余計な物が上がってたら死なせれ!

ディレクトリに日本語やスペースは使ってないか?
思い付くのはこんな感じか
■ このスレッドは過去ログ倉庫に格納されています