Androidプログラミング質問スレ Part11
1 :
デフォルトの名無しさん :
2011/08/04(木) 06:04:52.80
2 :
デフォルトの名無しさん :2011/08/04(木) 06:05:10.53
立てたよ〜
6 :
デフォルトの名無しさん :2011/08/04(木) 10:02:08.65
おちんちん6げと
windowsネイティブプログラミングなんてしたこと無いし、しようとも思わないよ
>>前スレ983 Java リフレクションでググれ でも多分データの持ち方を変えた方がいい
いちおつ
>>1 おつ〜
androidのWebViewで、インターネットを見る際に
googleなどの検索サイトは開けるのですが、Twitterを開こうとするとローディングのまま進みません。
現状webviewに対しては、getSettingsで、javascriptとズーム機能を有効化しているのですが
他に有効化すべきものがあるのでしょうか?
package nantara oneway interface IServiceCallback{ void updateString(String value); void updateDouble(double value); } のような感じで、プロセス間通信で複数のデータをメインアクティビティに送りたいのですが、 サービス側の記述方法がわかりません。 プロセス間通信を解説しているどこのサイトを見ても、 1つのデータの送信についてしか書かれていないので、複数のデータを送信することについて解説しているサイトか、 もしくはサンプルソースがあれば教えて下さい。 よろしくお願いします。
12 :
11 :2011/08/04(木) 15:34:42.38
すみません事故解決しました。
13 :
デフォルトの名無しさん :2011/08/04(木) 17:11:52.64
インテントでサービス起動するんですが、 その時に情報を渡す方法ってありますか? putExtrasだとサービス側がActivityを継承してないので無理っぽいのですが。
>13 最後の1行の理屈がよく分からないんだけど、オブジェクト指向初心者なのかな? 受け取ったインテントのgetExtrasメソッドを呼び出せば意図した通り動くかと
15 :
デフォルトの名無しさん :2011/08/04(木) 19:03:14.30
>>14 こういう状態です。
MainActivity側
int flag = 1;
Intent intent = new Intent(Serivece.class.getName());
intent.putExtra("FLAG", flag);
bindService(intent, hoge, BIND_AUTO_CREATE);
Service側
Intent intent = getIntent();
↑onCreateには書けない。
onStart、onBindに書いても、onStart、onBindは動いていないので、意味がない。
>15 bindServiceはサービスを起動するものではありません startServiceを使います サービス側はonStartでIntentを受け取ります startServiceに食わせるIntentの作り方など詳しいことは "Intentによるサービス起動"とかでぐぐればすぐ見つかると思います
17 :
デフォルトの名無しさん :2011/08/04(木) 19:32:18.34
>>16 ありがとうございます。
bindServiceには値は渡せないんですね。
19 :
デフォルトの名無しさん :2011/08/04(木) 19:48:36.72
>>17 bindServiceに与えたIntentはonBindで受け取ることになります
もちろん、目的のサービスに渡すにはIntentを正しくコンストラクトしないとダメですが
21 :
デフォルトの名無しさん :2011/08/04(木) 19:53:21.99
>21 onBindの時点だとまだextraは見えないはずなので、 詳しいタイミングはプロセス間通信を調べてね
というかbindServiceは サービスとプロセス間通信するためのインターフェースを取得するためのものなんだし、 初期化用のメソッドでも作って呼べば良いんじゃないの?
前スレでスルーされてしまったのですが、 2.3からのテキスト選択を無効、あるいは任意のタイミングでのみ呼び出したいのですが、どうすればいいのでしょうか。
>>24 level 11でsetTextIsSelectableってのがあるみたいだけど
RecognizerIntent.EXTRA_PROMPTの表示行数を増やす方法ってないですか? 3行以上の表示をさせたいのですが。
アプリAからアプリBに明示的インテントでとび、Bで戻るキーを押すとアプリAに戻ってしまいます。 戻らずにBからホーム画面に戻れるよう、Aを殺すにはどうすればいいでしょうか
28 :
デフォルトの名無しさん :2011/08/05(金) 11:53:51.31
>>27 インテント呼ぶ時にfinishも呼べー!!!
29 :
デフォルトの名無しさん :2011/08/05(金) 17:50:35.91
画像の管理についてお聞きしたく、書き込みをさせて頂きました。 ゲームのプログラムを作成しようと思い、画像をリソースフォルダの 「res/drawable-npdpi」と言うフォルダの中で管理していたのですが、 思いのほか画像が必要になり、一つフォルダで管理をするのが大変になってきてしまいました。 「res/drawable-npdpi」のフォルダの中に任意のフォルダを作れないかとも考えたのですが うまくいかず、ネットで調べたところ「無理ではないかもしれないが、おすすめしない」 と言うような内容でした。 幸い今のところは何とか管理も出来ており、どうしてもプログラムが実行できないと言う訳では無いのですが、 購入した書籍にも、ネット上にもこれに関する記事があまりに少ない為、 独学でやっている自分はどこか根本的な勘違いをしているのではないかと言う不安が付いて回って 仕方がありません。 画像ファイルが多くなった場合の対処法と言うものは何か有るのでしょうか? どなたかお分かりになる方がおられましたらご返答頂けけますと真に有難いです。 長文失礼しました。
>>29 1)画像を圧縮して、使用する時に該当ファイルを解凍する。
2)使用する画像を少なくする。
3)最後の手段でsd カードに置く。
お好きに。。
>>29 画像をassetsに入れとくってのもあり
行き詰ってしまった為、書き込みさせて頂きます。 新しいフレームバッファオブジェクトをいくつか作成して、 そこに一旦描画した後に本画面に描画させている部分があるのですが、 中断後復帰すると、フレームバッファオブジェクトに 描画しておいた情報が消えてしまいます。 この対策を知っている方はいらっしゃいますでしょうか?
クイズアプリ作りたいのですが、1問ごとにアクティビティを 用意するやり方ってスマートじゃないですか? putExtraで渡していけばいいと思ったのですが、これだと 戻るボタンを押すと1問ずつ戻ってしまいますよね? 理想はトップに戻ってもう一回押して終了にしたいです。 ご教授お願いします。
スマートかどうかはともかくSingleTopとか使えばいいんじゃないの?
35 :
33 :2011/08/05(金) 19:43:03.72
36 :
デフォルトの名無しさん :2011/08/05(金) 20:48:40.93
29です。
>>30 SDカードに画像が置けるんですか・・、
そちらに頼る前に色々考えた方が良さそうですね。
画像枚数の削減は・・その・・がんばってみます。
本当にありがとうございました!
>>31 assetsフォルダはその、聞いたことはあるんですが・・。
無知ですいません、ちょっと調べて来ます。
ご指導頂きありがとうございました!
Layoutについて質問なのですが以下のようにするとボタンが左上に重なって一つしか表示されず
困っています。左上から敷き詰めるように並べて表示したいのですが、どうすればいいのでしょうか??
http://ideone.com/HhHeF
>>37 とりあえず、 LinearLayoutだけ使っとけ!
>>38 レストンクス!
それでいちばん外側のFrameLayoutをLinearLayoutにしてみたんだが
最初のFarmViewだけが表示されて、TextViewやButtonが消える!!?
>>40 サンクスできた!
それでLinearLayoutってorientation指定しないと中のビューが水平に並んでくよね??
でorientation="vertical"すると縦にならぶ。これ、横に並べつつ埋まったら下の段に
降りてまた横に並べていくようにするにはどうすればいいかな!
>>41 自動改行は無理。
縦向きの LinearLayoutに横向きのLinearLayoutを入れ子にしたり、
横向きの LinearLayoutに縦向きのLinearLayoutを入れ子にしたり、、、
43 :
デフォルトの名無しさん :2011/08/05(金) 23:28:25.50
どなたかソースに書いてあるurlの隠し方知りませんか? proguard使ってもurlはそのまま残ってしまいます。 専用のurlなので、逆コンパイルやLogcatから知られて直接アクセスされるのを避けたいのですが...。
preferenceでEditTextPreferenceを横並びにする方法ってありますか?
45 :
デフォルトの名無しさん :2011/08/05(金) 23:37:45.72
>>43 ソースから隠してもWiFi経由で通信してネットワークパケットを傍受されれば
全部オシャカ。パケットを傍受とか書くといかにも難しそうに思えるかもしれな
いが、「wireshark 使い方」でググれば誰でもすぐに出来る。実は超簡単だ。
>>43 理論的に無理。暗号化を自前で書いたとしても暗号化部分を逆コンパイルされるので何やっても同じこと。
ていうか見られて困るものをロギングするもんじゃない。
理論上URLを完全に隠すことは不可能だしそもそもナンセンス。 URLを隠さなければならないなら設計が根本的に間違っている。最初から実現不可能な設計。
暗号化して使うときだけ展開すれば? 分かり辛くなるってレベルなだけで、完全隠蔽は無理だけどな。
ブリッジやプロキシ通したら終わり
最近Adobeの「AIR」というものを知ったのですが、Androidで動作させる際、 「ハードウェア上のAndroidOS(Dalvik VM)上のAIRランタイム上で動作するアプリケーション」 というイメージになるのでしょうか?
一部ネイティブにアクセスしているAPIもあるかもしれんが 基本的にそうだと思われ
55 :
デフォルトの名無しさん :2011/08/06(土) 12:32:49.65
子アクティビティから親アクティビティを取得できますか? 子アクティビティで追加という操作をした場合に、から親アクティビティのリストビューにアイテムを追加したいのですが、 親アクティビティのインスタンスの取得方法がわかりません。
56 :
55 :2011/08/06(土) 12:36:07.00
getParentで行けそうですね スレ汚しすみません
>>53 SDKダウンロードは人数制限かなんかで開始まですさまじく時間かかること多いよ。
モニタだけ消して外出しる。
>>54 ,57
左クリックで「Internet Explorer ではこのページは表示できません」
右クリックで「サーバーに接続できません」
ってなる・・・
ダウンロード出来る人が居るって事はこっちの環境の問題みたいですね。
調べてみます、ありがとう!
59 :
55 :2011/08/06(土) 13:01:54.47
getParentじゃうまくいかないな・・・ public final Activity getParent() Return the parent activity if this view is an embedded child. うまくいくはずないですよね
getParentはActivityGroupを使ってる場合に、 子Activityから親のActivityを取るメソッド 呼び出し元って話だったらそんなものは無いから 子を呼ぶときにstartActivityForResultを使って onActivityResultで結果を受けるようにする 子Activityを表示したまま呼び出しもとのAcitivityを操作しようっていうのは 設計がおかしいからやり直し
61 :
55 :2011/08/06(土) 13:38:25.09
予めButton等にセットされたOnClickListenerとかを取得する方法ってありませんか? setOnClickListenerはあっても、getOnClickListenerとか無いみたいですね。
>>62 ホントだ。ないみたいですね。
Viewのソース見ると
protected OnClickListener mOnClickListener;
で宣言してるから、Button等を継承したクラスを作って
自分でメソッド作ればできると思うけどね。
あるいはMapでkeyをButtonのインスタンス,valueをOnClickListenerのインスタンスで管理するとか
65 :
62 :2011/08/06(土) 15:02:46.24
>>63 ,62
有難うございます。
実はアプリに設置された広告のクリックされた回数を記録して、GoogleAnalyticsで調査したいと思ってます。
アドネットワークViewのOnClickLitenerを一時的に差し替えて、何とかできないかと思ったんですが、
結構難しそうですね。
なにか良い方法は無いですか?
>>65 親のViewGroupのonInterceptTouchEventとかでいけると思うけど
それをやることが規約としてどうなのかは知らん
>>67 クリ率100%とか完全におかしいだろw
10%ぐらいに抑えたとしても怪しすぎるw
ユーザー評価も下がるだろうな
あー、男女比ね
一昨日公開したアプリなんだけど、昨日1日 合計インストール数0 有効インストール数1 だったんだけど、これってどういうこと? 自分でもインストールしてるんだけど、統計情報見ると自分の端末じゃないし。
デベロッパー向けの質問スレとかないよなそういや。
というか開発者が集まるスレみたいなのもないし。
>>72 統計情報はしばらくしないと結果が出ない。
というかグチャグチャでしばらく経ってもあまり信頼のおける情報は出ない。
1日1回の更新でいいから、正確なのが欲しいよな。
ちょっと質問です。 開発環境は Windows XP です。 高速な処理が必要な部分があるので、NDK に手をだそうと思ったのですが NDK 部分は Eclipse は未対応で、Cygwin 上からコンパイルを行う必要があると聞きました。 これは現状でもそうなのでしょうか?対応予定があるかどうかとかは不明なのでしょうか?
width,heightがfill_parentなTextViewのフォントサイズを、 テキストが収まる最大の値に設定したいのですが、 何か方法はありますか?
>>77 端末の幅を取得して、テキストの文字数をカウントしてそれを幅で割って
あとはなんかする
全部やってくれる便利なメソッドはないわな
スキニングをサポートしているandroid用の3Dライブラリはありますか
81 :
デフォルトの名無しさん :2011/08/07(日) 14:43:39.94
AndroidでOpenGLを用いた2Dゲームを作成しています。 全てリソースとして保持していた画像を一部だけネットからダウンロード するように修正したのですが、あらかじめリソースとして保持していた 画像のほうのアルファブレンドが全くされなくなってしまいました。 OpenGLのバージョンが1.X系の場合にこの状態が起こってしまうのですが、 この不具合について何か情報をお持ちの方はいませんでしょうか? (OpenGL2.0だと出ない) ネットからダウンロードして画像を描画するように変更した 以外は特に変わっておらず、何度ソースを見直してもアルファ ブレンド処理に問題があるようには見ないのですが・・。 修正前 リソースの画像→アルファブレンドしている 修正後 一部ネットからダウンロードした画像→アルファブレンドしている リソースの画像→アルファブレンドが効かない
NDKはこちらでよろしいでしょうか? 開発環境とSDK,NDKともにインストールし終わり、Hello-jniをエミュレータで 実行するところまでは漕ぎ着けました。 そのあと確認のため、Cプログラム側の文字列Hello from JNI !を適当に変更して ndk-buildを実行。ビルド成功のメッセージを確認。が、IDEからRunしたところ、 表示内容に変化がありません。 以下に続きます
83 :
82 :2011/08/07(日) 17:05:58.44
プロジェクトをクリーンしたり、*.soをわざと削除して作り直したりしても いっこうに変化が無いのです(*.soを消した状態でも実行できるのでそもそも 別の場所からロードしているのかもしれません) javaソース側の変更は実行結果に反映されるのは確認しました。Cソースの修正は どうやったら反映されるんでしょうか? あるいはこの手のトラブル解決の糸口 のヒントでもあればお願い致します。
ndk-build cleanとかやっとけ
85 :
82 :2011/08/07(日) 17:17:42.25
やってみましたが駄目でしたorz ファイルが作り直されたのは間違いないですが... そもそもsoを消しても実行できるのがおかしくないですか? どこから読み込まれてるんだろう...
86 :
81 :2011/08/07(日) 17:21:32.14
gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE); を gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_DECAL); にすると出来ました。 でも何故ダウンロードした画像はOKで、リソースの画像はアルファブレンド されないのだろう。なぞだ
>>82 アプリをいったんエミュレータからアンインストールしてみたら
88 :
82 :2011/08/07(日) 17:27:26.61
>>87 いったんアンインストールしてからやったら、起動時にunexpectedly云々というダイアログ
が出て二度と起動しなくなりました。
どうもビルド環境がおかしいのかもしれません。ちょっと調べ直してみます。
ありがとうございました。
webに落ちてたコードをコピペしてみたらバッチリ動作する でもコードを読んでもどうして動いてるのか分からない・・・
プロジェクトフォルダ直下のlibだかlibsだか内にある.soファイルが更新されてないだけじゃないのか?
92 :
82 :2011/08/07(日) 18:06:01.43
93 :
82 :2011/08/07(日) 18:39:20.98
なんか消したり入れたり作り直したりを繰り返してたらとりあえず意図した結果が 表示されました。(ごたごたぶりからは、とてもうまくいってるとは言えませんが) 結局Cソースの変更を反映するために、 ●IDEでのクリーン(nkd-build clean はしないでも良い) ●adb uninstall でエミュレータからのアンインストール が必要なところまでは絞り込めましたが、これは何か間違っている気がしますorz
AndroidManifest.xml内の android:screenOrientation="portrait" などで縦横の表示を固定できるのですが、 これをクラス側で制御することは出来ないでしょうか?
すみません自己解決しました。 setRequestOrientation で出来るのですね。
いつもお世話になってます、ListViewに関しての質問です List一つ一つの中身をカスタムしているListViewでは タップしたときの色を変更するのは不可能なのでしょうか? 一つのリストに複数のTexiViewを入れ込んでいるListで selectorで色指定をしたxmlをbackgroundに指定するコードでは タップ時の色変更ができませんでした どなたか教えてください、よろしくお願いします
>>96 親の状態(selectedとかfocusedとか)を引き継ぐってフラグがあったはず
ひとつの Activity の中で、複数の .xml を使って複数の画面を表示させています。 このとき、画面A と画面B とで例えば同じようなボタンとがあった場合、同じ ID を割り当てて使うことは出来ないのでしょうか? ID を同じにすると、画面A では大丈夫なのですが、その後表示する画面B で落ちます。 例えば、全部の画面にある "進む" ボタンの ID は同じにして、処理を共通化したいのですが。 (そもそも、ひとつの Activity の中で複数の画面を持つことがおかしい?)
>>96 どこの色を変えたいのかよくわからない。
本当にデフォ状態のTextViewだけが複数載ってるなら、リスト行の色は変わるはず。
それが変わらないなら他にボタン等の余計なViewが載ってるか、TextViewに余計な属性が付いてる。
もしくはリスト行の色でなく押したTextViewだけの色を変えたいのか。
あと実機だと速すぎてプッシュ時の色変化が見えないこととかあるけど。
>>99 カスタムしたリストビューってクリック色変更できなくない?
>>96 あ、クリックに反応しないんじゃなくて、デフォ色になるって意味?
それなら行のトップのLayoutをClickable・Focusableにする。
selectorもそのLayoutに対して設定。
そうすると多分ListViewのonItemClickListenerではイベント取れなくなると思うんで、そのLayoutのViewに対してsetOnClickListenerする。(ボタンとか載せつつ行も押したい場合も同じ)
positionの値取るのめんどいががんばれ、っていうかなんか便利な方法あったら教えてください。
おいおい、WindowsでNDKで開発する場合 Cygwin入れなきゃいけねーのかよ。 Cygwin大嫌いなんだけど何とかならんの?
>>103 仮想PCかデュアルブートでlinuxを運用する。
もしくはlinuxサーバーを立てる。
cygwinを好きになれば解決
android 端末からPCへUSBでデータ転送って、やっぱできないんですかね?
>>107 PCから携帯へならともかく
携帯からPCへUSB接続できる端末なんて無いと思うが
IcecreamSandwichかその次あたりでUSBホストが有効になるんじゃなかったっけ?
>>98 ソース見てないのでエスパーするが…
画面Aと画面Bは排他的に表示されるんだと思うけど、findViewById()で取得しているのは
画面Aのボタンで、画面Bに切り替えた時に存在しないボタンを処理しようとしてないか?
IDは同じでもオブジェクトは別になるから、画面切り替えた時に取得し直さなければ
ダメだと思う。
111 :
10 :2011/08/08(月) 11:54:33.99
やはりWebViewでアクセスした時だけ繋がらない…
Manifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
googleから検索→Twitterでも ○←ロードから先に進まない
webview.loadUrl("
http://www.google.co.jp/ ");
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setBuiltInZoomControls(true);
最初のロードURLを
webview.loadUrl("
https://mobile.twitter.com/ ");
に変更してもだめ
何か足りないものがやはりあるのでしょうか?
>>80 3d java android library skinning などのキーワードで探しても見つかりませんでした
何というライブラリか教えてください^^
Wifi転送は遅い
>>114 確かに。バッテリを気にしてか、規格上は56MBpsとかもサポートしてるのに、
デフォルトで一番遅いやつ(12MBps)くらいで頭打ちするんだよな。
>>107 え?
出来るだろ?なんで出来ないんだ?
>>115 12M全部使い切ってるわけじゃないから遅いのはLANチップとかドライバとかLAN使ってる側とかそっちの問題だよ。
LANがユーザーモードとかよくある話。
118 :
デフォルトの名無しさん :2011/08/08(月) 17:29:30.83
GridViewで写真と対応する名前を対にしてを並べて表示させているんですが GridViewの画面をスクロースすると、 写真や名前の組み合わせも並び順もでたらめにずれてしまうんですが 誰か解る方いませんか? エミュレータ上でしか試してませんが。
Activityとか以外からApplicationContextを取得する方法ってない?
たとえばいくつ取得するか解らない要素を int iに代入して5つ毎に1ページとしてカウントするようにしたいのですが 例:iが0〜4ならページ数int aは0 5〜9ならaは1 10〜14ならaは2... とカウントしていくにはどのように記述したら良いでしょうか? ちなみに要素数の上限は無いです
>>109 Android端末がUSBホストになったところで
PCがクライアントとして繋がらないと無料だけどな
>120 ここはプログラミング初心者スレでも算数初心者スレでもないので
int i = 21; int a = i/5; if( i%5 != 0) a+1; こういうことだろ?違うのけ?
(i)
帝王に i などいらぬ!
帝王お節介
132 :
98 :2011/08/09(火) 01:27:47.27
>>110 ありがとう。どうやら、質問したのとは違うところでコケてるっぽいですね。試しに以下のような小さなプログラムを
書いてみたら、きちんと画面が切り替わりました。XML は省略しますが、ボタンをひとつ配置して、同じ ID (button) を振っています。
複数の画面 (レイアウト) で同じ ID を指定して、ひとつの Listener で処理出来るってことですね。。。
public class Sample extends Activity {
int display = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display1);
((Button)findViewById(R.id.button)).setOnClickListener(buttonListener);
}
OnClickListener buttonListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (display == 1) {
setContentView(R.layout.display2);
((Button)findViewById(R.id.button)).setOnClickListener(buttonListener);
display = 2;
} else {
setContentView(R.layout.display1);
((Button)findViewById(R.id.button)).setOnClickListener(buttonListener);
display = 1;
}
}
};
}
133 :
デフォルトの名無しさん :2011/08/09(火) 11:11:01.71
WebViewでWebサイトを表示させたいのですが、表示サイズが大きすぎて 画面サイズからはみでてしまいます。 そのあとでピンチインピンチアウトをすれば大きさは調整できますが、 Web表示させるときに、ちょうど1画面に収まるように倍率を調整できないでしょうか? この記述でも1画面には収まりませんでした。 settings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
テスト用にマーケットにアップして、インストールして実行できるかという、一連の動作を行いたいのですが、 この際、他のユーザーから見えない、とかマーケットの検索結果に出さないということはできないのでしょうか。
>>134 APKファイル作成して、CMDからインスコすればおk
136 :
133 :2011/08/09(火) 13:15:21.13
133です。 以下の記述で解決しました。 WebView browser = (WebView) findViewById(R.id.webview); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true);
>>134 テストが終えたら非公開にすればいいんじゃない?
ただし、一旦公開したら非公開にできるけど削除はできないみたい。
ちなみに有料アプリはマーケットから自分の端末にはインストールできないみたい。
>138 削除できない意味がわからないな とにかくありがと
140 :
デフォルトの名無しさん :2011/08/09(火) 21:55:41.27
質問させてください。 EditTextに文字が入力されている状態でEditText中のある文字間をタッチした場合、 どの段階でタッチ場所にカーソルが移動するのでしょうか? 少し前まではonClick()が呼ばれる前にカーソルが移動していたと思うのですが、 Javaのバージョンが変わったせいかなのかonClick()の段階では移動しなくなってるような気がします。 どなたかご存知ではありませんか?
141 :
デフォルトの名無しさん :2011/08/09(火) 22:53:02.60
どなたかご教示ください。 bluetooth(ブルートゥース)を使って、AndroidとiPhone間を通信させたいのですが、 技術情報や実現している参考アプリを教えて頂ければと助かります。 英語サイトでも結構です。 とても困っています。よろしくお願いいたします。
>>141 自身で調べたんだよな。
どこまで判った?
マルチはやめなさい
144 :
141 :2011/08/09(火) 23:30:45.54
R.stringのstringをいろんなクラスから参照したいんだけど、どうすればいいかな?? activity内ではgetResources()とか生で使えるけど、他のクラスだとうまくいかない。 layoutの中は@string/で簡単に参照できたから似たように出来るといいんだけども
>>145 layoutはコンストラクタにContextを貰ってるからリソースを参照することが出来る
参照したいクラスにContextを渡せば良い
>>146 サンキューベリーマッチ
たいへんうまくいきました
初歩的な質問ですみません。 Intent intent = getIntent(); ってのはnewしないのは getIntent()の実装部分でnewしてオブジェクトを作って それを返すようにしてるからですか?
初歩的な質問ですみません。 Intent intent = getIntent(); ってのはnewしないのは getIntent()の実装部分でnewしてオブジェクトを作って それを返すようにしてるからですか?
エラーとでたのに書き込めてた…
>>149 違います、getIntent()はActivityのメソッドです
Activity起動時に使用されたIntentを返すだけです
あ、そういうことですか。 妙に考え込んでしまって。 ありがとうございます!すっきりです。 ついでといってはなんですが Calendar cal = Calendar.getInstance(); の場合はどうんでしょうか。 コンストラクタがprivateになってるからメソッドで取得してるとかですか?
153 :
152 :2011/08/10(水) 02:39:01.15
あっとこっちのほうはドキュメンテーションにちゃんと書いてました、すみません。 あたりまえだけど。 protectedでした。
その辺は実装次第だからコメントなり、ドキュメントなりを見て確認する必要がある まあ、クラス名.getInstance()というのはシングルトンパターンでは良く使われる形 getIntent()の方は内部変数へのアクセッサー、多分setIntent()もある
155 :
152 :2011/08/10(水) 02:57:42.70
getIntentのほうは 今調べてみたらIntentのコンストラクタは修飾し無し? 結局Calendarクラスと一緒っすかね? 上で書いてくれてるActivityのメソッドっての改めて考えたらわからなくなったです。 ActivityクラスのメソッドってonCreateとかだけじゃないんですか? Intentクラスのメソッドなんじゃ…。 なんか俺完全に間違ってるかな。 泥沼だ
156 :
152 :2011/08/10(水) 03:04:03.99
Activityクラスにちゃんとあった。 ややこしいこといってすみません。 1人で何やってんだか
>>155 Activityから参照なしにIntentのメソッドは呼べない
Javaをもうちょっと勉強したほうがいい
158 :
152 :2011/08/10(水) 03:16:55.64
ほんとだ。まいった。 だからIntentクラスのメソッドなわけないんですね。 あほでした。 Javaの基本からがんばります。
159 :
152 :2011/08/10(水) 03:19:58.22
それとなんもわかってない自分に ご丁寧にありがとうございました。 同じ人なのかな。もうしわけないです。 でも質問させてもらった部分の理解は深まったと思います。 本当にありがとうございました。
button = new Button(this); button = (Button)findViewById(R.id.Button01); これでエラーになるんですけど原因として何が考えられますか? R.id.Button01にはサンプルにあるような普通のボタン設定です
>>160 お前はエラーの内容までエスパーを所望か?
>>180 とりあえず最初の
button = new Button(this);
は必要ない。
次の行でfindViewById(int)の結果をbuttonに代入しているので、
最初のnew Button(this)で生成されたボタンオブジェクトは単なる
ゴミと化している。この場合はnullで初期化するのがJavaのお作法だ。
>>160 俺が昔やったミスはレイアウト読み込むまえにそのコードいれたとかかな。
むしろ Button button = からかもよ?
ひょっとして変数を宣言してないなんてVBみたいな失敗じゃないよな? エラーってコンパイルエラーじゃないよな???
エラーってことはsetContentView不在の可能性大。
167 :
160 :2011/08/10(水) 19:44:30.12
>>162 button = new Button(this);
を消しましたが駄目でした。
>>163 レイアウトは読み込んであります。
>>164-165 宣言はしてあります。
なんでこんなところで予期せぬエラーになるのか憤っております。
AnimationDrawableを使ってパラパラ漫画みたいに画像を表示させたいのですが、 xmlで指定した画像を別の画像に差し換えることは可能でしょうか?
エラーすらも提示出来ないなら辞めてしまえ。
エスパーすると スペースが全角スペース
>>160 くらいド初心者だと、想像を絶する何かをやらかしてる可能性があるからなあ
だからこそエラーメッセージが大事なのだが
単なるインポート漏れだな
いやいや、レイアウトにButton01がないんだよ
久々のエスパー合戦だw
>>173 その場合はfindViewByIdがnullを返すから次の参照タイミングでぬるぽじゃないか?
classCastExceptionだっけか? それぐらいしか思い付かんな・・・。
エディタで追加したButtonのIDの初期値ってbutton01じゃなかったっけか?
標準のアラームのアラーム一覧画面って、ListView? あれをほぼそのまま実装したいんだけど、 どうすればできるか教えてつかーさい・・・
>>178 あ、ちなみに
2.3のxperiaAcroに載ってるやつです。
一番上の行に、アラームの追加があって、どんどん追加していくと
下のアラーム一覧が増えていく感じ。
で、左端に有効/無効のトグルボタンあり。
恐らくxmlが悪いんじゃ? android:id = "@+id/button01"になってないとか?
ご教授願います googleMapにオーバーレイをループで追加する処理で躓いています onCreate内で呼び出した別のスレッドのループ文の中でoncurrentModificationExceptionが発生してしまいます どうやらコレクションを同期を取ればよいみたいなのですが下記のコードでもエラーになってしまいます シンクロさせる場所がおかしのでしょうか? runメソッド内は下記になります public void run() { DataBaseHelper helper = new DatabaseHelper(this); SQLiteDatabase db = helper.getReadableDatabase(); DataDao dataDao = new DataDao(db); //SQLデータの中身をすべて取り出している List<Data> dataList = Collections.synchronizedList( dataDao.selectAll()); db.close(); synchronized (dataList) { for(Data data : dataList) { //オーバーレイを追加する処理 } } よろしくお願いいたします
自己解決しました
>>181 例えばswingの場合だと、GUI描画と描画結果に影響するプロパティの更新は
EventDispatchThread以外から実行してはいけないというルールがある。
AndroidのViewやその他のマルチスレッド言語のGUIも同じようなルールがある。
たしかHanderクラスのRunnableを引数に取るメソッドを使って描画スレッドに
処理命令を渡すことができる。
>>183 ありがとうございます!
無事できました
がしかし、やっぱり読み込みがめちゃくちゃ思いです・・・
SQLから読み込んで100件ほどの位置情報と住所などををオーバーレイさせているのですが
動作がカクカクでもっさりです
軽くする方法は何かありませんでしょうか?
どんな些細なことでもいいのでお願いいたします
遅レスだが
>>160 はプロジェクトクリーンで直ったりしないだろうか?
galleryをスライドしたとき、 強弱に関係無く一枚だけスライドさせる、 ということは可能ですか?
EditTextの入力内容を0以上の整数に限定するにはどうすればいいでしょうか? 無理であれば0以上の整数以外が入力された事を判定する方法をご教授ください
>>187 EditTextPreferenceの方法だと
android:inputType="number"
だけど、それでダメかね?
Android 2.3以降のエミュレータで、 参考書に載っていたカメラアプリのサンプルコードを起動すると画面が真っ白になり、 LogCatを見ると下のようなエラーが出ています。 ERROR/SurfaceFlinger(74): texture=9, using format 17, which is not supported by the GL 画面真っ白はエミュレータのバグ、というブログ記事があったのですが、 上のようなエラー表示でも実際のAndroid2.3以降の機種ではエラーは出ないのでしょうか?
高麗辛苦アダプターぶっ殺す
エミュレータではなく、実機でテストしろ。 お前のエミュレータにはカメラがついてるのか?
>>192 Android 2.3以降の実機がないので・・・。
>>184 GOOGLE MAPってキャッシュ機能とかないのかな?使ったことないけども
>>184 SQLってもしかしてSQLiteのこと?
Android内蔵SQLiteで100行取得なんてやったら物凄く遅いよ
試しにデータを取り出すだけのコードを書いてテストするといい
>>195 数万件のデータ取ったところで1秒もかからないけどな・・・
Androidのプロジェクトをコピー→リネームで別物にしたいのですが、うまくいきません。 Javaパッケージを仮に jp.firstname.android.projectname とします。 この場合、各ソースの一番上に(.java) package jp.firstname.android.projectname; って出ます。 次にAndroidManifest.xmlno <manifest xmlns:andoroid = 省略; package = "jp.firstname.android.projectnmae.pj1st"を package = "jp.firstname.android.projectname.pj2nd"にリネームします。 この後に、 .Rを使っているものがエラーを出すので jp.firstname.android.projectname.pj2nd.R;に変更してエラーを消しますが、デバッグすると ClassNotFoundExceptiontoになります。 データをジョイントするのに<application /application>で囲んで android:name="jp.firstname.android.projectname.pj2nd.JointData"> ※JointData.java pj2ndを消して、javaのパッケージと同じようにしてもやはりClassNotFoundExceptionが発生します。 Javaのパッケージと、AndroidManifest.xmlのパッケージは同一名称にしないといけないのでしょうか?
198 :
197 :2011/08/11(木) 10:54:05.83
データをジョイントするのにの部分に追加 Applicationを使っています。
xmlを読み込んですでに存在しているPreferenceに、 クラスから項目を追加するようなメソッドってありませんか?
200 :
デフォルトの名無しさん :2011/08/11(木) 11:46:09.48
画面上部に画像を配置して、その下にListViewを配置したいと思っています。 この状態でListViewをスクロールするとListViewのみスクロールされて、上部の画像が一緒に スクロールされません。 Android Market のUIのように、上部のViewも一緒にスクロールできるようにするには、 どうすればよいでしょうか。
ちょっとプログラムと違うけどここでいいかな? AndroidってiPhoneのGameCenterみたいなランクサーバーって提供されてないんかな?みんな自前?
>>200 よくわかんねーけどスクロールされたら上の画像もスクロールアウトさせたいってこと?
真面目にやるんならリストビューに画像表示
スクロールビューに画像とリストビューはっつけて手抜きできそうな気もするけど逆に手間かもしれんね
203 :
デフォルトの名無しさん :2011/08/11(木) 11:59:15.61
画面上部に画像を配置して、その下にListViewを配置したいと思っています。 この状態でListViewをスクロールするとListViewのみスクロールされて、上部の画像が一緒に スクロールされません。 Android Market のUIのように、上部のViewも一緒にスクロールできるようにするには、 どうすればよいでしょうか。
>>197 リファクタリングのリネームで問題なくコピー作れたけどな
マニフェストのパッケージ名と合わせなきゃそりゃ駄目なんじゃねーの?
つーかプロジェクトコピーでなんでパッケージ名さわる必要があるのかが分からん
ListViewのHeaderView(?)の画像設定しろ
>>205 ヘッダだとスクロールについてくるんじゃねかったっけ?
>>206 ん?画像もスクロールさせたんだよね・・・?
HashMapオブジェクトをBundleに保存したのですが、 どうすればいいかな??
Androidとか関係なくて悪いんだけどスクリーン座標系の(x,y)からUV座標系の(u,v)へ変換するにはどういう式書けばいいの?
>>201 pankiaっていう無料のソーシャルフレームワークがリーダーボード使えるよ。
×保存した ◯保存したい
>>209 >>210 さんきゅ
>>210 これ?
・(x, y)--->(u, v)の変換式
u = 4x / (-2x + 12y + 3)
v = 6y / (-2x + 12y + 3)
・(u, v)--->(x, y)の変換式
x = 3u / (2u - 8v + 4)
y = 2v / (2u - 8v + 4)
>>208 putSerializableでいいんじゃね?
>>204 分けようと思った理由が、取り敢えずここまで出来たやつはこれとして置いといて
それをベースに改良するために複製した感じです。
やはりJAVAのパッケージ=AndroidManifestと合わせないと駄目なんですかね?
一応、JavaパッケージをAndroidManifestと同様にすれば動くのですが
パッケージを触らないとデバッグした後に、同じファイルと見なされて
前のアプリを上書きしてしまうのです。
>>214 あーなるほど別アプリにしたいのね
パッケージ名をリファクタリングで別名にすりゃいいだけなんだけど
マニフェスト内のパッケージ名がアプリケーション識別子になってっからそこ変えてそれに合わせなきゃ駄目よ
>>213 HashMapの中もSerializableならそれでOK
217 :
197 :2011/08/11(木) 13:09:22.64
>>215 ちょっとよく分からず。
パッケージ名といっても、2つありますよね。
JavaパッケージとAndroidを識別するためのパッケージかな?
Javaパッケージを固定しつつ、Androidパッケージだけを変えたいと思っています。
で、その為に
AndroidManifest内のAndroid:nameも
.名前じゃなくて、きちんとフルパスに変更し
jp.firstname.android.project.pj2nd.JointDataという形にかえたのですが
それだと
>>197 の通りのエラーが発生するのです。
JavaパッケージをAndroidパッケージと同名にした場合。
自動的に.pj2nd.JointDataにリネームされその状態だとやはりエラー、
なのでリネームされた所に関しては、更に再度
jp.firstname.android.project.pj2nd.JointDataに変更し、デバッグすると
エラーもなく通る感じです。
なので、やはりJavaパッケージも変えないといけないってことになるのでしょうか?
>>213 >>216 parcelableで何とかしようと思って、gdgd調べてたがSerializale簡単すぎワロタwww
なんでparcelableなんかあるの??
申し訳ありません失念しておりました。 元々javaとandroidManifestに記載してたパッケージ名は同じで量産していたのですが、 その場合アプリ毎に両方のパッケージを変えないといけませんし、javaのパッケージって そんなに変えるものじゃないと思うので、jp〜ここまで基本名.アプリごとの固有名詞っていう形にしたいと考えました。 【Javaパッケージ】 jp.firstname.android.project ←ここは変更したくない [+] ほにゃらら.java うんたん.java AndroidManifestの中身↓ 【Androidパッケージ】 package = jp.fistname.android.project.1st ←アプリ1 package = jp.fistname.android.project.2nd ←アプリ2 ↑このような感じに、していくことでインストールしたときに別アプリとして認識されるようにしたいのです。
220 :
203 :2011/08/11(木) 13:18:20.11
>>205 ListViewのHeaderViewに画像を設定することで、画像も一緒にスクロールさせることが
できました。ありがとうございました。
221 :
197 :2011/08/11(木) 13:20:36.36
>>219 のようなことは出来るのでしょうか?
出来るかどうかをやってみたのですが、
>>197 のような結果になり。
<Application android:name = "jp.firstname.android.projectname.pj2nd" 省略 >
に変更してデバッグした場合、ClassNotFoundExceptionで止まり
Javaパッケ側に合わせればいいのかな?と
<Application android:name = "jp.firstname.android.projectname" 省略 >
これもまた止まります。
JavaパッケとAndroidパッケを同名にすると
<Application android:name = "jp.firstname.android.projectname.pj2nd" 省略 >
となっていたのが、リファクタリングで
android:name = ".projectname.pj2nd" 省略>に勝手に変更され
この状態でデバッグしてもエラー
これを勝手にリファクタリングされる前に戻し
android:name = "jp.firstname.android.projectname.pj2nd" 省略 >
この状態でデバッグをすると正常に動作します。
>>221 えーとね、アクティビティはパッケージ省略すっと、マニフェストに書かれているパッケージをデフォルトとして取りいくの
だからクラスねえよ例外になんのな
んだからフルパス指定すると動かせる
Rはマニフェストに書かれたパッケージに作られるからマニフェストのパッケージを変えたらインポートも書き換えなきゃなんねーのね
コピー元のソースを共用したいん?
そうじゃないなら一緒のことだからJavaのパッケージ名をリファクタリングでリネームすんの。パッケージ名合わせててもソースは分岐してんだから意味ねーし
>>222 Rに関しては問題なく、Manifestのかかれたパッケージ名でimportしてあります。
話がそれてきてますが、結論からいうとつまりjavaパッケとmanifestパッケは同名じゃないと駄目ってことですかね?
アプリ1とアプリ2のソースを共有化するつもりはないですが、
javaパッケージ名って、そうそう変えるものじゃないかなと。
>>223 駄目じゃないけど面倒になるって話
アクティビティをフルパス指定すりゃ動かせるんだから
そうそう変更すべきじゃない最たるものはマニフェストやで
そのマニフェスト定義を変更しましょうって話なんだから、気にせんとJavaのパッケージ名くらい変えてよろしいやん
マニフェストいらった時点で別アプリになるんやから、そもそものパッケージ名もちゃんとわけといた方が混乱しなくていいってばっちゃがいってた
>>224 なるほど(´・ω・`)パッケ+Manifest変更のままでいきますか・・
有難う御座いました。
PreferenceActivityで、指定したファイル名のSharedPreferencesをデフォルトにすることはできないんでしょうか?
logcatのpidの番号って何を指しているのでしょうか?
>>218 直列化されたデータが軽量とかあった気がする
>>227 OSレベルのプロセスIDだと思うけど。このIDが同一なら同じapkって
ことで大体いいんじゃないか?ひとつのapkから複数プロセスが出てくる
やつもあると思うが。
>>212 ごめん間違えた。スクリーン座標じゃなくてウィンドウ座標だった。
タッチされた位置(x,y)から(u,v)に変換したりウィンドウ座標で指定した位置にUV座標で文字書いたりしたかったんだ。
232 :
160 :2011/08/11(木) 14:56:20.45
おまたせしました。解決できました!
レイアウトをaddViewする前にfindViewByIdしてました。
>>163 が正解でした。
レイアウト読み込む=addViewと気づきませんでした。
Thanks a lot! :-)
(^ω^)
TranslateAnimation中のonClickを受け付けないようにしたいのですが どのようなロジックがいいでしょうか?
自己解決しますた
してません><
>>235 自己解決したんなら、どうやって解決したのかもちゃんと書いとけや
ボケ
>>237 IDが見えないからいたずらしてるだけだろ。
239 :
234 :2011/08/11(木) 16:55:22.33
>>235 は違う人です。
とりあえずTranslateAnimation後にスリープをかましてみたのですが
どの位置に書いてもTranslateAnimationが開始する前にスリープしてしまいます。
>>239 いや、わかってて書いているからw
コールバック onAnimationEnd でいんじゃね?
241 :
234 :2011/08/11(木) 18:04:32.71
少しスレチかもしれませんが、Android開発者スレが他に見つからなかったのでここに書きこみます。 新しいAndroid marketアプリ(vending)では カテゴリー毎の新着表示がありません。 あるのは人気の新着だけです。 評価数ゼロ、ダウンロード数ゼロのまったく新しいアプリは ユーザーの目に触れることさえ できなくなったのでしょうか?
>>242 まじで?
OS2.1以上で新マーケットだっけ?
とりあえずOS1.6の俺はずっと旧マーケットなので新着は見れる。
つまりOS1.6ユーザーが人中になってDLして面白ければ評価が上がり
新マーケットでも目に付くようになるとw
andengine落としてみたらほとんどがRefferenceLibrariesに入ってて classファイルになってjavaコードが見れないんですけど、どうやったらもとに戻せますか
そういうものなんで戻さないでください
ビットマップ操作でのことなんですが Bitmap bitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888); pen.setColor(Color.argb(255, 0, 0, 255)); //アルファ値255で設定で描画 bitmap.drawPoint(10,10,pen); int pixels[] = new int[width * height]; bitmap.getPixels(pixels, 0, width, 0, 0, width, height); //取得 int d = Color.alpha(pixels[width*10+10]); //dのアルファ値は64に アルファ値255で描いたものが配列で取得するとなぜか64になっています。(表示は正常) これは何故なんでしょうか?
247 :
デフォルトの名無しさん :2011/08/11(木) 22:03:05.67
intentで呼び出したカメラアプリで撮影した画像の、 ファイルパスを知るにはどうしたらいいのでしょうか?
xmlでListViewにandroid:onItemClickって設定できないですよね? リスナーを使わずにxmlに書きたいのですが、どうすれば良いのでしょう?
すいません、自己解決できました
そしてボクは途方にくれる
>>247 カメラ呼ぶときにURI渡して
戻ってきたらそのURIからパス取得する
ジャイロスコープや各種センサーで得た値を使って、 実機を向けている方向に何かを表示したいです。 周りを球体と捉えるとどのような表示の仕方になるのでしょうか?
もちろんユニバーサルメルカトル図法
メルカトル鮎
>>218 interface Serializableを書いただけってオチはないよな?マトモに
動くように自前で実装するのは結構手間なんだがな。
まぁArrayListとHashMapとプリミティブ以外は使わんほうがいいと
言われてるからありもので済ますのが一番だ。
>>255 HashMap<Integer,自作クラス>なんだが、自作クラスをImplements Serializableってしただけで
うまくいったんだが、なにか問題が??とりあえず試してみたらスリープとかに対応できてるっぽいし
すみません。詳しい方がいらっしゃったら教えていただきたいのですが 紙ベース(もしくは紙をPDFなどに電子化したもの)の文字を認識するようなオープンソースのライブラリってありますか? イメージ的にはAQUOSフォンのIS12SHなんかにプリインされてる『撮る家計簿Photoマネー』のレシート認識機能や、 AdobeのPDFの文字認識機能みたいなものが実現できるライブラリが無いかな〜と探してます。 『撮る家計簿Photoマネー』のベンダーさんの株アイエスピーは独自開発でレシート認識システムなるものを開発されたみたいですし Adobeもブラックボックス化されてるみたいです。 もしご存知の方いらっしゃったら教えて下さいませ。 ※【Google】 Androidアプリ作成のレスでも同じ質問マルチでします。
マルチ予告w
>>256 ああ、やっぱりね。たしか同じプロセス内だとIPCの手続き端折って
インスタンス渡しされるというのを見たような気がするので同じプロセス内での
受け渡しなら動く可能性はあるな。
まぁでもそれってたまたま動いてるだけだから意味がわからないなら自前の
クラスとかやめといたほうがいいよ。
よいではないか。 世の中には何故そうなるのか、わからないものなど沢山あるのだから。
クラス内で、FrameLayoutの子要素のImageViewにマージンを持たせるやり方を知りませんか?
すいません自己解決しました。 FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(width , height , Gravity.CENTER); layoutParams.setMargins(5, 5, 5, 5); imageView.setLayoutParams(layoutParams); でした。 setMarginsにdpを指定することは出来ないのでしょうか?
たびたびすみません自己解決しました。
エミュレータ上で動かした際のSharedPreferencesの中身を確認する方法はありますか? デバッグ用としてコードを書く以外に方法があればと思いまして
>>259 自作クラスやめたらjavaで出来ること何も無いだろw
JVMの開発者じゃないんだから極端なやつだ
WebViewでページを読み込む際に、この画像は取得して、この画像は取得しない〜とかできるのかな? WebViewClientのonLoadResourceから、このリソースロード中止!とかできればいいのに。
>>264 adb shell cat parh/to/preference。
もしくは確認用のunit testを書くとか?
269 :
デフォルトの名無しさん :2011/08/12(金) 10:23:19.04
ListViewで任意の行の高さをプログラムで変更したいと思っております。 高さの設定なら、XMLで指定できるのですが、プログラムで指定するには どうやって指定すればよいでしょうか?
取得したIntentから、それがクラスから送られてきたかを知るにはどうしたらできますか?
>>266 シリアライズするのは、って意味だろ
とはいえ、同じアプリ内のインテントはそこまで神経質になる意味ないと思うけど
どっちかと言うと、パフォーマンスのが気になる
MatrixでImageViewを回転したいのですがしてくれません。 ImageViewは何で回転できるのでしょうか? 一応ソース ImageView image = new ImageView(this); image.setImageResource(R.drawable.hoge); Matrix matrix = new Matrix(); matrix.postRotate(90); image.setImageMatrix(matrix);
自己解決しました。 setScaleType(ImageView.ScaleType.MATRIX); これが必要なようです。
プロセスに残らない終了の仕方を試行錯誤していたのですが
以下のような終了方法は何か問題がありますか?意見ください。
画面の縦横方向が変わった時に終了しないように
メンバ変数にprivate int exitFlag = 0;を保持して、
終了したいタイミングでexitFlag = 1; finish();。
onDestroyの中でexitFlag==1のときにkillProcessとしています。
また、戻るボタンを押したときにも終了するために以下のようにしています。
ソース
http://ideone.com/lRB0p
wigetに動的にTextViewをリストっぽく作成することって出来ませんかね? 3.0以前で
できました。お騒がせしてすいません。
>>274 多分マルチスレッド処理だど思うけど、それなら複数スレッドから読み書きする変数はvolatileにすべき。
278 :
274 :2011/08/12(金) 14:14:38.05
書き換えて確認せず書きこみしたら、戻るボタンを押したときに終了しませんでした。
修正しました。マルチスレッドではないです。
http://ideone.com/OyKM9 でも、なんでさっきので動かなくて、これだと動くのかわかりません。
おしえてください。
Java+NDKで行くかNativeActivityで行くか検討中なんだけど。 NativeActivityではListViewとかダイアログとかWebViewとか使えない?
NativeActivityって2.3からしか使えないじゃない
>>277 intは元々アトミックじゃ?
そもそもbooleanで良いじゃんと思うけど
>>256 シリアライズ可能クラスが親のフィールドを隠蔽しててsuper.fでアクセスしたら値が一致しないに4万5千ペリカ!
何でプロセスまで終了させる必要があるのかが不思議
>>284 コミュ障らしい書き込みですねw
相手の気持をもう少し考えられるようにならないと何時までも童貞のままですよw
>>285 お前のどこが相手の気持ちを考えているのか問いたいんだが?
勘違い突っ込まれて逆切れみっともない上にバカか。
>>286 因果応報という言葉を送りましょう。
あなたが少しでも成長できるように助言してあげたんですよw
荒い言葉遣いに本性がでてしまったようで、図星をついて申し訳ない
>>287 コミュ障らしい書き込みですねw
相手の気持をもう少し考えられるようにならないと何時までも童貞のままですよw
>>288 オウム返ししか出来ない哀れな子を相手にするのは気が引けますw
そういう石頭だと生きて行くのが大変なのでしょうね。
せいぜいネット上で吠えて日々抑圧されているオカマのような生活のストレスを発散していってください
自己紹介乙としか言いようがない
ちょっと前の流れは自己解決乙
アプリ作成初心者です。
ここ(
http://p.tl/gya5 )を参考にお絵かきアプリを作成していて、追加で戻る機能を作ろうとしているのですが上手くいきません。
List<Bitmap>を用意して、MotionEvent.ACTION_UPイベントでリストにBitmapを追加して、戻るボタンを押したら、invalidate()を呼び出し、
onDraw()内でcanvas.setBitmap(hogeList.get(_hogeList.size()-1))を呼び出す処理を行っているのですが、画面が真っ黒になってしまいます。
なぜ真っ黒になってしまうのでしょうか?
293 :
292 :2011/08/12(金) 23:00:35.05
ドロイト君のエロ画像きぼんぬ!
自己解決しました。
何も着けてる様子がないのに乳首がわからんな
WebViewで標準ブラウザに設定されているホームページを表示する方法ってありますか?
ググったら簡単にできました。もう大丈夫ですw
大丈夫じゃないです そういうのやめてください
>>298 手元の本には乗ってないが、一般に配布されてるアプリでブックマークを
整頓してくれるのがあるので、ブックマークとかと一緒に初期URLも取れる
んじゃないかと思う。
それが取れるなら、後は普通にWebViewへそのURLを渡せばOK。
>>301 ありがとうございます。
そっち方面でググってみます。
>>277 intはアトミックだしこの場合の変数はラッチなので
マルチスレッドだからといっても別に対処は不要でしょう
305 :
デフォルトの名無しさん :2011/08/14(日) 00:50:18.53
Viewを回転させる方法ってありますか? 画像ではなく、例えばLinearLayout自体を回転させる方法なんですが。
例外が発生した時にスタックトレースに自分が書いたコードの発生行が載らないけど みんなどうやって例外が発生した行を特定するの?例えば public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int a = 0; int b = 1/a; } } だとMyActivityの8行目って知りたいけどスタックトレースには 載らないのよね?
ログに載ってるイメージで生きてきた 単純なデバッグでそんな苦労したことないし
デバッグしてるときはログをあちこちに置いてる さっぱりバグが分からなくて、どうしようもないときは 1行毎にログ置いたり… 昔のやり方なのかな
>>306 試してから聞くべきなじゃあないかな?今回の例だと呼び元がフレームワークだけれど
きちんと拾って報告するので非チェック例外だろうと自分が直接落ちてるなら
トレースに載る。ただし実際にキャッチするのがかなり上のレベルなのでログの
下のほうに表示されてわかりにくいという場合はある。
>>309 もちろん一晩中試してスタックトレースも一番下まで穴が開くほど何度も確認
してるけど、どこにもMyActivityやonCreateの文字は見つからないのよ、、、
onCreateやArrayAdapterを継承したgetViewみたいなコールバックとか309
の言うところの呼び元がフレームワークになるようなところが載らない。
onClickとかは載る。
環境にもよるかと思って2.2と3.0のエミュレータと2.2.1の実機でも試したけど
やっぱ同様だった。
開発時は最悪308で良いと思うんだけど、業務アプリとかでカットオーバー後
の不具合の特定用に有効なログが取れないのは困るなぁと。
>>311 んじゃそこでは例外は発生して無いってことじゃないの?
なんでスタックトレースには出てないのに例外が発生してると思うの?
すまない。勘違いしていた。LogCatに出力したスタックトレースには出てた。 てっきりスタックトレースとtry-catchしていないとeclipseのデバッグビューに 表示される内容は同様だと思ってた。マジごめんなさい。 なので有効なログは採取できることはわかったけど。 今度はじゃぁデバッグビューについて同様の疑問になるんだよね。 try-catchをまだ入れてなかったり抜けていたりだと、やはり例外の発生箇所 はわからない?(onCreateやコールバック上) 開発時に例外の発生箇所の特定がちょっと面倒いかな。
andoroid では java の clearRect に相当するものはないんでしょうか? 黒ではなく透明で埋め尽くしたいのですがどうすればよいですか? p.setColor(Color.argb(0, 0, 0, 0)); あるいは(255, 0, 0, 0) g.drawRect(rect,p); ではだめでした。(透明の無描きや黒になってしまう)
バカジャネーノ
タイトルバーの背景色を動的に変えたいんだけど、どうやればいいか教えてください。
>>313 最終的に例外をキャッチしなかった(強制終了のダイアログが表示される)場合でも
Logcatには表示されるはずだけど
>>314 透明になってるけどその下にあるViewが黒いんじゃ?
>>317 いえ、bitmapは透明でないことを確認しています。
>>317 例外で止まった時点で実行を停止させてたよ。
再開を連打してたら最終的に確かに出た。
例外で止まったからそれ以上は再開できないって停止してたよ。
すっきりしたありがとう。手間取らせたね。
常識として分かっている人からはバカに見えると思うけどまったく
違う開発環境からきた人間なんでやっぱり固定観念ってのがあってね、、
320 :
314 :2011/08/14(日) 14:36:53.13
bitmap.eraseColor(0); というのを見つけました。 これで全体の透明化はできるようです。 rect範囲の部分だけクリアする方法はないですかね。
>>303 Javaにint操作がアトミック保証なんて仕様あったっけ?
でもそれ以前にonDestoyってUIスレッドで動くものと思ってたが
volatileつけなきゃリオーダーされるよ。 java.util.concurrent.atomicならCPUレベルでテスト&セットしてる。
longやdoubleはアトミックでないけどintはアトミックでしょう
アトミックってのが何を指しているのか知らんが、intがvolatileなしでもvolatileになるかというとそれはノー
JMMはシングルスレッド環境でのプログラム配列を逐次実行した結果と 同じになるなら何してもいいので当然マルチコア・マルチスレッド環境なら結果が変わる。 だからJSR-133でvolatileがメモリバリアに変更されたんだよ。
なんのはなしかよくわからないんですが
>>278 はそのままでいいんですか
スレッドのことはよくわからないんです
マルチスレッドにしたつもりはないんですが
あと
android.os.Process.killProcess(android.os.Process.myPid());で終了させるのは危険だと書いてあったのですが
onDestroyの最後にかけば大丈夫なんじゃないか?とおもって
>>278 のようにしたのですが
この考えは合ってますか?教えてください。
onDestroyは途中でkillされないことが保証されていないので いきなりkillしても構わないことにはなっているが onDestroyを呼ぶ側からすりゃ返って来ると思ってるものが絶対返ってこないので あまりお行儀の良い処理ではないと思うよ。
>>324 16bit CPUにAndroidをつむ変態がいるかもしれないじゃない
>>324 そもそも今のCPUはプロセス間通信やアウトオブオーダー実行でCPUレベルでアトミックではない。
javaはそれに対して特に何もしてないので自分でコード書いて対応するしか無い。
というか、リオーダーされる時点でバイトコードレベルでアトミックじゃないよ。
>>327 あのソースだけでは何がどこからアクセスされててどういう処理されるか分からないから自分しか答えようがない。
331 :
314 :2011/08/14(日) 17:22:59.43
>>322 ありがとうございます。
やってみたのですがこれもdrawARGB(0, 0, 0, 0)のときアルファ値が0で何も描かれないのと同じ動作をしたのですが
私の環境だけでしょうか?
・drawARGB RGBとアルファ値で、描画領域を塗りつぶします。
とあるのでこれでできそうな気はするんですが… もう少しやってみます。
ボラボラボラボラ
>>330 そこで言ってるアトミックとは書き込み動作や読み込み動作中に他の
スレッドに割り込まれないという事を言ってるんだろう。書き込んだ値が
他のスレッドから見えるか見えないかは保証されないが、変な値(4バイトの値として
1バイトだけが書き換わったような)が見えるという事はないと言っている。
それはjavaの仕様なのでそこは変わらんだろう。
8バイトの値だと書き込みや読み込みで他のスレッドの割り込みがありえるから
4バイトだけ書き換わったような変な値が見えたりすることがあるので対比される。
>>331 drawRect&Paint.setAlpha
>>334 これは
setColor(Color.argb(0, 0, 0, 0));
と同じ効果と思ってやってみたのですが、やはり同じ結果でした。
>>333 >変な値(4バイトの値として1バイトだけが書き換わったような)が見える
それjavaのいうアトミックじゃないじゃん。
割り込みはするけどVMが4バイト単位で扱ってるから1バイトだけ変わることはないよ。
あるけど起こったらちゃんとクラッシュする。
>>336 javaのといえば厳密には異なるかもしれんが、広い意味でのアトミックといえば
間違いではない。
より安全なコードにするにはvolatileにすべきだろう。VMの最適化手法としてvolatileてない変数をキャッシュする手法も知られている。 javaじゃないが.NETではvolatileでないプリミティブなメンバー変数が他のスレッドによって書き換えられても、書き換え元スレッド意外からは古い値が読めてしまう。 将来のバージョンではandroidでも同じになるかもしれないし。
>>335 何がしたいのかよく分からんが元の色を残してAlpha値だけ変えたいってこと?
>>337 javaのスレでjavaの話してるんだろうが。
間違いではない(キリッとかなにいってんだ。
>>340 ハァ?普通に解説本でもintがアトミックとか書いてあるぞ。
intが読みや書きというひとつの動作ではアトミックなんてのは
ちょっとやってりゃわかる話だろ。
342 :
314 :2011/08/14(日) 18:44:31.04
>>339 最終的には2枚のbitmapのdrawBitmapを使った合成ですが
そのために部分的領域を黒ではなく完全な透明でFillしたいです。
Alpha値0描画は何もなされない命令多いです。
>Alpha値だけ変えたい
そうですね、それでできそうですが
配列に変換してforを使って書き換えればできますが、時間のかかるループでなく
clearRect のような1発の命令でやりたいです。
「たまたま現在の実装でそう動作している」のと「仕様で保証されている」のは区別した方がいいよ Androidの世界では尚更 そういうことやる奴が「Androidは互換性が」とか馬鹿なことを言い出す
>>344 枠ではなくて模様のあるところは前面に、黒(透明)の部分は元画像が後ろにあるような合成です。
合成する画像がいろいろ変化するので
一旦色のある場所をアルファ値0の黒で描きかえる作業を必要としてます。
>>345 合成する画像にあらかじめAlpha値が設定されているならPorterDuff.Mode.DST_OVERとか?
>PorterDuff.Mode.DST_OVER これ複雑そうですね。調べてみます。
348 :
292 :2011/08/14(日) 22:10:56.44
>>292 どなたかヒントだけでも頂けませんかorz
url先が見れなかった。 …答えられるか否かは別問題だがね。
350 :
292 :2011/08/14(日) 22:31:16.71
351 :
デフォルトの名無しさん :2011/08/14(日) 22:50:19.50
Webviewでキャッシュがある場合はキャッシュを表示し、 無い場合は指定したURLを表示するということはできますか? つまり、キャッシュがあるかどうかを判断することは可能でしょうか?
「MotionEvent.ACTION_UPイベントでリストにBitmapを追加して、戻るボタンを押したら」ってあるけれど、処理遷移は大丈夫なのかね。 確認項目としては… 1)onDraw()に遷移して来てlist要素数を確認。 2)listの全要素対象にsetBitmap()を実行してる?
>>310 マトリックスだとImageViewしか回転させられなくないですか?
ScaleTypeでImageView.ScaleType以外があるということでしょうか?
354 :
292 :2011/08/14(日) 23:24:30.61
処理遷移は(多分)大丈夫だと思います。 戻るボタン押した時に「戻ってるフラグ」的な変数を用意しています。 >1) トーストで確認しているので要素数が0ということはないはずです。 要素数が0の場合、canvas.setBitmap(hogeList.get(_hogeList.size()-1))で範囲外エラーが出ると思っています。 >2) 知識不足で申し訳ないです。理解が出来てないです。。 全要素対象としてしまっては一番最初の画面に戻ってしまうのではないでしょうか? 前述通りcanvas.setBitmap(hogeList.get(_hogeList.size()-1))としているのですが、 これだと処理が足りないのでしょうか?
じゃあ試しに下記のコードに書き換えてみて。 int i; for (i=0;i<_hogeList.size();i++) { canvas.setBitmap(hogeList.get(i)); }
356 :
292 :2011/08/14(日) 23:46:42.41
>>356 じゃあlistの要素数は意図した数になってない様な気がする。
申し訳無いが、List へ要素を追加する部分のコードを提示して。
358 :
292 :2011/08/15(月) 00:08:18.08
こんな感じです。 public boolean onTouchEvent(MotionEvent e){ switch(e.getAction()){ case MotionEvent.ACTION_DOWN: if(_isBack ){ _isBack = false; _hogeList.clear(); _hogeList.add(bmp); } x = e.getX(); y = e.getY(); break; case MotionEvent.ACTION_MOVE: _canvas.drawLine(x, y, e.getX(),e.getY(), paint); x = e.getX(); y = e.getY(); invalidate(); break; case MotionEvent.ACTION_UP: _hogeList.add(bmp); break; default: break; } return true; }
リフレクションに関する質問なんですが、例えば何か値を返すメソッドであれば、 int i = Reflect.nantoka; で使えますが、 何も返さないメソッド、voidであった場合はどうすればいいでしょうか? hoge.Reflect.nantoka(111); が出来ないので困っています。
>>465 _hogelistにaddした直後とonDraw で描画する直前でLog.vで_hogelistの要素数を表示してみて下さい。
そろそろ寝ます。
357だ、すまん。
362 :
292 :2011/08/15(月) 00:42:45.71
>>360 ほんとにありがとう。
Log.vの使い方がよくわからないから、トーストで表示したんだけど、1つだけ線を書いて戻るボタン押したら
onDraw()でリストの数が1って表示されました。
何かが根本的に間違ってるんでしょうねぇ。。。
Androidプログラミングというとちょっとスレ違いなのかもしれんが、 エミュレータのSkinの作り方とかって解説してるWebサイトとか資料ってあります? ググってもXPERIAのSkinにしよう!とかそんなばっかりで…
「戻る」押下時のみリストの要素をクリアしてから、1つ追加してるやん。
365 :
292 :2011/08/15(月) 01:09:06.76
>>364 戻ってる最中に新しく描画されたら1からって感じです入れてるんです。
酒飲んじゃったから頭回らなすぎなんですが、、、。
タッチダウンのときにクリアしないと昔の要素が無くならなくて戻りきった時に予期せぬ所に戻るんではなかろうかと…
>>359 とりあえず
int i = Reflect.nantoka;
からして意味不明だわ
Method#invoke()
じゃないの?
367 :
sage :2011/08/15(月) 01:53:40.64
ホームアプリを開発中です。 PreHomeやTaskSwitcherのように他のホームアプリとの切替えや、ダブルクリックモードをさせたいのですが、どのように実装すれば良いでしょうか? アドバイスをお願いします。
364で指摘した > 「戻る」押下時のみリストの要素をクリアしてから、1つ追加してるやん。 とある様に1つしか要素が無いのでしょ? それを〜.size()すると1が戻って来るが、それを-1してる。 何も描画されない原因はそこでは?
アクティビティで A⇒B⇒C という動きで Cで終了となります。 Cのときに戻るボタンを押すと当然Bに戻るのですが これをAに戻す書き方ってあるのでしょうか? Cの画面にAに戻るボタンを付けても、端末の戻るボタンを押されると Bに戻ってしまいます。
>>369 Cを開くときにBを閉じる
Cが閉じられたときにBを閉じる
バックキーが押されたときにAに戻る
やり方は色々
371 :
デフォルトの名無しさん :2011/08/15(月) 12:26:15.73
テキストボックスに2文字ほど入力したら 電話帳から候補となるアドレスをひっぱってきて リストとして表示させる、 標準のメーラーみたいな機能の、 サンプルソースをそのまま下さい(*´Д`)
いくら出す?
SurfaceViewにタイマーを置いて四角が右に移動するプログラムですが 毎回クリアされたBitmapに描いて右へ移動してますが、縦線の残像が再描画されてしまいます。 なぜこのような現象がおこるのでしょうか? ※抽出したソースは一部省略があります。 class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback { public MySurfaceView(Context context) { super(context); init(); } public void init() { holder = getHolder(); holder.addCallback(this); setFocusable(true); requestFocus(); } public void surfaceCreated(SurfaceHolder holder) { timer(); }
public void timer() { ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); executor.scheduleAtFixedRate(new Runnable() { @Override public void run() { //この部分 Canvas c = holder.lockCanvas(); Bitmap bm = Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_8888); //bmは毎回クリアされている Canvas cb = new Canvas(bm); cb.drawRect(++x,0,x+100,100,paint); //AntiAliasなし Style.STROKE で登録されたpaintです c.drawBitmap(bm,0,0,null); holder.unlockCanvasAndPost(c); } }, 1, 100, TimeUnit.MILLISECONDS); } }
c.drawBitmap(bm,0,0,null); の前に paint.setColor(Color.BLACK); paint.setStyle(Style.FILL); rect = new Rect(0,0,320,480); c.drawRect(rect,paint); を入れてフォームをクリアしたら残像残らなくなりました。 しかしフォームがかいてもいないbitmapに干渉して絵が戻るとは意味がわかりません。 どういうことなんでしょうか?
>>375 具体的な症状がよくわからないが、
Canvas c = holder.lockCanvas(); で取得したCanvasに
直接描画すればいいんじゃない?
描画されたもの(残像)が自動的にクリアされると逆に困る場合もあるから、
クリアしたいときにクリアするほうが自然。
CanvasにクリアするメソッドdrawColor (int color)があります。
よく考えると目に見えるc = holder.lockCanvas()のCanvas の方にクリアしてない残像が残ってるのは当然でした。 初歩的ミスです。失礼しました。
初歩的な質問すみません ArrayAdapterに複数のメソッドが同時にアクセスするために synchronized(adapter){ adapter.add(aaa); } と記述したのですがエラーが出ます CalledWrongThreadExceptionです この場合もhandlerを使う必要があるのでしょうか? よろしくお願いいたします
>>365 hogeList
と
_hogeList
が混在してるけど、これは単なるミスタイプか、意図したものなんだよな?
ミスタイプと意図したもの以外の可能性って何があんの?
>>380 コーディング規約とかでアンダーバー付きがパラメータとかメンバー変数を意図するように命名規約を儲ける場合がある。
だからアンダーバー付きはメンバー変数、アンダーバー無しはローカル変数みたいに間違った変数を操作している可能性があるという意図なんじゃないか?
>>378 まんまだよ、メインスレッド以外からアクセスしちゃいけない
>>378 一覧系のUI部品にセットするデータを非同期で取り出したい場合、List<一覧データ>を受け取るpublicメソッドをアクティビティクラスに作っておき、
そのメソッドの中でHandlerを使って実際にデータをセットする処理を呼び出すのがオススメ。
ちなみにHandler経由のメソッド呼び出しは直接呼び出しよりは遅いはずなので、できるだけまとめてデータを渡すのがベスト。
WakeLockについて質問させてください。 大容量ファイルのダウンロード処理など、処理に時間がかかる場合のCPUスリープ対策でPARTIAL_WAKE_LOCKが 必要になる閾値の処理時間は機種依存ですか? 自分が使っている端末だと、20〜22秒くらいでCPUが寝てしまうみたいなのですが、他の端末も同じでしょうか?
385 :
292 :2011/08/15(月) 22:15:37.35
>>379 アンダーバーが無いのはミスタイプです。申し訳ないです。
>>381 がおっしゃってる通りメンバ変数です。
で、戻る動作自体は解決できました。
コード貼ろうとしたんですけど、文字数制限に引っかかって貼れないです・・・。
次レスで貼ります。
386 :
292 :2011/08/15(月) 22:17:44.95
public boolean onTouchEvent(MotionEvent e){ switch(e.getAction()){ case MotionEvent.ACTION_DOWN: if(_isBack ){ _isBack = false; _hogeList.clear(); _hogeList.add(bmp.copy(Bitmap.Config.ARGB_8888, true)); } x = e.getX(); y = e.getY(); break; case MotionEvent.ACTION_MOVE: (中略) case MotionEvent.ACTION_UP: _hogeList.add(bmp.copy(Bitmap.Config.ARGB_8888, true)); break; default: break; } return true; }
387 :
292 :2011/08/15(月) 22:22:53.67
protected void onDraw(Canvas canvas) { // バック中でない場合 if (!_isBack) { canvas.drawBitmap(bmp, 0, 0, null); } // バック中の場合 else { _hogeList.remove(_hogeList.size() - 1); Bitmap temp = _hogeList.get(_hogeList.size() - 1); canvas.drawBitmap(temp, 0, 0, null); } } onDraw()内はまだ整理してないのですが、これで戻れました。 新しく線を書くと戻す前の絵が戻ってきてしまいますが、、、。
>>384 閾値っつーか常にWakelockかけるべきだと思う
390 :
デフォルトの名無しさん :2011/08/15(月) 23:35:59.45
俺の嫁
誤爆///
392 :
378 :2011/08/15(月) 23:47:40.19
>>382 >>383 レスありがとうございます
早速そのように実装してみたのですが
該当のメソッドがAsyncTaskないのためかうまく動きませんでしたorz
複数のblogをrssパースしてビューに表示するような処理です
そのようにってのを具体的に書いた方がいいと思う
>>392 複数のURIを一つのタスクに渡すって方法あったりしない?
それがあったらいけそうだけど、、、
AsyncTaskだったら呼び出しもとのスレッドで処理行う方法用意されてるだろ
TabActivityでアクティビティを呼び出す場合、 例えば TabA TabB TabCというタブがあったとして呼び出すアクティビティは同じ一つのアクティビティなのですが 呼び出し時に選択されたタブに応じてアクティビティの動作を変更したいのですが良い方法ありますか? よろしくお願いします
/res/drawable/のリソースではなくてユーザーが選んだ任意のフォルダから画像を読み込む方法ないですか?
>>396 concurrent frameworkつかってUIスレッドと別スレッドで自前でやったほうがいい。
ActivityGroupを使いたいのですが、上手く動作しません。
http://y-anz-m.blogspot.com/2011/02/android1-activity-activitygroup.html を参考にしているのですが、以下のコードをonCreateに記述しても、
ChildActivityの内容が表示されません。
windowがnullでは無いこと、view.getId()が-1になること、ChildActivityのonCreateが呼ばれていることは確認しました。
OSが1.6だと駄目などがあるのでしょうか。
super.onCreate(bundle);
setContentView(R.layout.main);
layout = (LinearLayout)findViewById(R.id.group);
Intent intent = new Intent(getApplicationContext(), ChildActivity.class);
Window window = getLocalActivityManager().startActivity("10000", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
if(window != null) {
View view = window.getDecorView();
Log.v("selectedIndex", String.valueOf(view.getId()));
layout.addView(view);
}
宜しくお願いいたします。
自己解決しました。 groupが表示領域を確保できてないだけでちゃんと表示できていました・・・。
こちらのサイトの方法でtwitterアプリケーションを作成しているのですが、Asynctaskの表示が不安定で画像取得中にリストをスクロールしてしてまうと違う画像が表示されたり画像自体が表示されなかったりしてしまいます。 どなたか解決方法お教えください。
非同期処理で、HandlerとAsynkTaskとServiceがあるわけですが、 どれが一番レスポンスがいいんでしょうか?
ServiceってstartServiceを明示的に呼び出した場合は呼び出し元と同じ スレッドだっけ? バインドしたら別になるのかな?
preferenceのsummaryって4行までしか表示できないんですか?
ファイルに書き込みだとSDカードからファイルが見える状態なんですよね? データベースに書き込みした場合は見れませんよね? 簡単なデータ(日付と1、2の数値)を記録したい場合は ファイルとデータベースどちらがいいのでしょうか?
>>406 本体のストレージにファイルとして書く。
>>406 データベースだってSD上に書けば見えるんだぜ?
540x960みたいなヘンタイ端末がでてきたけど エミュじゃテストできないな 480x800を標準にして作ろうと思ったが最近では480x854も増えてきた 背景画像サイズ泣かせだよandroidは サイズ別にファイルうpできるようにはなったけど変更とかあったら 全部変えたりするのは面倒だよな 480x720で作って画面にフィットさせるようにすべきか できれば拡大させないで高画質を保ちたいんだが みんなどうしてるの?
2つのActivity(呼び出す側と、呼び出される側)があるとして、 呼び出される側をfinish()したときに、まだ呼び出す側をアプリ起動時と同じように動かしたいのだが、 単純にfinish()しただけではできない。。 ※例えば呼び出す側を1秒おきにカウントアップする画面、呼び出される側を結果表示とすると、 呼び出される側を閉じても、呼び出し側のカウントアップはリセットされない。 どのように工夫して解決できますでしょうか。。
呼び出す時にfinish 呼び出される側からstartActivityでもう一度起動 とかじゃ駄目なの?
ListViewを読み込み時に並び替えた状態で表示する方法はありますか? ListView内の要素で並び替えたいのですが Javaのコレクションを利用するしかないのでしょうか? 詳しい方ご教授いただけると幸いです
>>410 エミュ作成時画面サイズ手入力出来るだろ
>>415 レスサンクスです
1行のListViewならそれでいけるんですが
カスタムして2行にしているリストビューなので上と下のビューがバラバラになってしまうのです
できれば1枠ごと並び替えたいのです
>>490 日本は変態解像度が大好きだから仕方ない。
ディスプレイ小さいのに解像度上げてどうするんだと言いたいが・・・。
Aquosだかなんだかの液晶搭載ってのが、他に比べてコントラストが微妙で 三原色のドットまで見えたのには笑ったな。
>>417 RetinaDisplayディスってんじゃねえよ
>>416 カスタマイズしてようがgetViewで書き換えるしかないって
422 :
デフォルトの名無しさん :2011/08/16(火) 22:50:03.71
HttpClient使って特定サイトとhttp通信するアプリ作ってるんだけどうまくいかない 最初のログインはうまくいくけどその後セッションが維持されていないぽくてログアウト状態になっちゃう HttpClientを使い回してもcookieお任せで処理してくれるわけではないの? DefaultHttpClient hClient = new DefaultHttpClient(); //ログイン HttpPost hPost = new HttpPost(URL_LOGIN); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("userid", id)); nameValuePairs.add(new BasicNameValuePair("password", pass)); hPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); hClient.execute(hPost); //↑ここまでは問題なさげ //cookieでセッションが正しく保持されていればログイン状態は維持するはず //次の処理 hClientは使いまわす HttpPost hPost2 = new HttpPost(URL_HOGE); hClient.execute(hPost2); //ここでダメ。ログインしろよと怒られる
クッキーってリクエスト側に乗っかる物だからなあ
3秒しかコード見てないので、バグかわからんが HttpClientの使い回しはダメじゃなかった? それとcookieはコンテキストで引き継ぐべし。
>>412 ありがとうございます!解決できました!
ド初心者ですみません。。
427 :
デフォルトの名無しさん :2011/08/17(水) 07:05:30.79
自作アプリでホーム→アプリ→ホーム→アプリ と何度か往復していると、 WARN/SharedBufferStack(1081): waitForCondition(LockCondition) timed out (identity=72, status=0). CPU may be pegged. trying again. というエラーが出続けて、スマートフォン自体がフリーズしてしまいます。 機械翻訳すると共有バッファのスタックがタイムアウトしました。CPUは釘付けになることがあります。再試行。 のような感じなのですが、 これはどのようなことが原因で起こるのでしょうか? ご存知の方、おられましたらご教示ください。よろしくお願いします。
>>408 ImageView Lazy Load とかでぐぐってみそ
私も現在、
>>408 と同じサイトを参考にしてリスト表示のアプリを作成しています
質問なのですが
こちらのサイトのソースだとたくさんのAsyncTaskが作成されてしまうようですが、
こういった場合、別のActivityを起動したりこのActivityを閉じたりした時に実行中のすべてのAsyncTaskを終了するにはどうしたら良いでしょうか?
是非、ご教授ください。
webviewのキャッシュがあるかないかを調べることって出来ますか?
PHPでいうexplodeみたいな関数はJavaにありますか? カンマで区切ったデータを配列に入れたいのですが。
434 :
432 :2011/08/17(水) 14:25:33.73
マーケットに上げたアプリは削除できないんでしょうか。 テスト用の自分のアプリとパッケージ名が被ってしまい、完成物が公開できません。 アップデートすればよいのでしょうが、無駄にアップデートはしたくありませんし・・・
質問です XmlPullParserで一度に複数のrssフィードを読み込ませることは可能でしょうか? 順番に、でも構わないので同じスレッド上から読み込ませる方法があれば教えてください よろしくお願いします。
>>436 一個読み終わったら次読み込めば良いんじゃないの?
現在ソースコードからandroidをインストールする方法はないんですか?
DB使いたいんだけど、Androidの場合、idは必ずしも必要ないという 認識であってますでしょうか?
自己解決しました
>>438 何にインストールしたいの?
エミュレーターだったら普通にできるけど。
Intentを永続化する方法はありますか? ショートカットIntentを保存して、簡易ランチャーみたいなことがしたい。
教えてください。 ListView上にTextViewとCheckBoxを表示させて複数選択可能な画面を作っています。 ListViewのOnItemClickListenerで、CheckBoxのタップ時イベントをキャッチしたいのですが、 どうしてもTextViewをタップした時にだけ反応してしまいます。 上記の現象はCheckBoxの定義でfocusableをfalseに指定すれば直るとあって、試したのですが駄目でした。 ご教授お願いします・・・。
>>442 IntentはParcelableだからいけるはず
どうしたらいいんでしょう? serializableは永続化、Parcelableは一時的ってのと IntentにputExtraで独自クラスを載せる方法 ぐらいしか探せない
447 :
442 :2011/08/17(水) 21:04:16.64
>>443 同じような感じで、checkboxにイベント張った記憶がある
AndroidのXMLまわりは何でWBXML使ったりStAXじゃなくて もうずっとメンテされてないXMLPULL使ったり変態なんだろう。 pull型は実装上組み込みには向かないからJ組み込み特化のjavolutionにすればよかったのに。
>>446 >serializableは永続化
シリアライズは永続化じゃないしjavaのシリアライズは永続化のために使うもんじゃないからな。
分かっててやるなら良いが分かってないならJSONにメンバの内容を書きだすとかしたほうがいい。
webViewでgoogleにアクセスすると、下ようなエラーが延々出てきます。
ERROR/Web Console(6061): Uncaught TypeError: Cannot call method 'getItem' of null at
http://www.google.co.jp/:187 他のサイトやグーグルの別ページは大丈夫なのですが、回避できないものでしょうか?
>>451 web storage 系かな?対処方法わかんないけど。
>>435 将来に渡って唯一無二でなければならなかったはず
>>445 一昔前のlinux系の雑誌とかにそういう記事があったような...
ASUSのちっこいやつに入れてたような。
探せばそういう記事はあるんじゃないの。
つ1年前の日経Linux
そういえばIntelがPC未満に食い込むべくAndroid3.1をx86に移植中ってちょっと前に読んだな。 来年には実機も登場するらしいけどOSだけ入手とか可能になるんだろうか?
x86 projectに寄与されるんじゃないの?
ドライバーもないとなあ ネットブックも普通に使えるように
>>460 だってテスト用と思ってるのはGoogleじゃなくてあんただし
[無駄にアップデート]の意味がわからん 変えるのがテスト版なら誰も気にしないし、完成版ならまだリリースしてないから誰にも影響ないでしょ
Environment.getExternalStorageDirectory() でSDカードのパスをFileに取得して、 exists()するとtrueなのですが、canWrite()するとfalseが帰ってきます。 つまりはSDカードは存在するが、書き込むことは出来ない、となっているのですが 書き込めない原因は何なのでしょうか? 容量はたんまりありますし、USBデバッグも有効にしています。 たとえば同じ名前のファイルがある、というのであればわかりますが フォルダのパスだけ見ているこの段階で書き込めない理由がわかりません。 何かSDカードの設定かアプリ側で設定するべき項目があるのでしょうか。
そりゃディレクトリだし
パーミッションがないか書き込みロック
そもそも、そのディレクトリそのものを本当に書き換えたいの?
嘘書いたんで調べてきた WRITE_EXTERNAL_STRAGEパーミッションちゃんと見るのね 知らんかったわ
AndroidでSQLite使ったアプリを作りたいんだけど、まとまった参考書が見当たらない・・ 応用方法とか書いてあれば理想的なんだけど。 Android前提のSQLite参考書って発刊されてませんよね?
Android前提って何か特別なことでもあるの?
>>469 まともなAndroidの本には大抵書いてるだろ
手元の本にも書いてあった
472 :
デフォルトの名無しさん :2011/08/18(木) 13:34:49.29
OpenGLを用いたアプリにProGuardを適用しようと思うのですが、 「OpenGL」を用いた場合、アプリの難読化で気をつける点など何か 教えていただけないでしょうか
Android用のチューニングとか濃ゆい話だと本にしても需要が無い気が
イメージボタンを透過したいのですが プログラムで書く方法がわかりません
頑張りましょう。
自己解決しますた
EclipseでAndroid2.2の開発を始めたんですが main.xmlの構造の所がgraphical layoutになってくれません どうやってgraphical layoutを表示させるのでしょうか? よろしくお願い致します
>>478 ソースが表示されているウィンドウの下にタブが2つあると思いますので切り替えれば解決だと思います
>>480 全てのAsyncTaskのインスタンスを保持しておいてキャンセル
初心者大杉w
データベースからテーブル読み込んでカーソルを先頭にする部分で質問 Cursor cur = db.query("MT_ITEM", null, null, null, null, null, null); cur.moveToFirst(); これで引っ掛かる様子なんですが、query()の設定間違ってるんでしょうか
>>482 俺も同じ状態になったことあるよ。
その時はADT(だっけ?)とかそこいらの開発ツールを全部アンインストールしてインストールし直したら、表示される様になったよ。
>>483 元々はスレタイに初心者って付いてたじゃない。誰かの一言で付かなくなったけど。
そんな俺も先月から開発始めた初心者だぜ。
初心者だって良いじゃない。
でっかい針に引っ掛かる俺カッコワルイ(笑)
>484 とりあえずエラーメッセージを晒しましょう
487 :
484 :2011/08/18(木) 23:50:06.48
>>486 アプリをエミュで起動すると「"The application (...) has stopped unexpectedly. Please try again!」とよくあるエラーが出ます。
デバッグでは警告が2つ出てます
08-18 14:45:29.423: WARN/ActivityManager(70): Launch timeout has expired, giving up wake lock!
08-18 14:45:29.493: WARN/ActivityManager(70): Activity idle timeout for HistoryRecord{44fa3558 com.cc080/.Listview}
>>485 ありがとうございます。調べて見ましたがそっちの方が早そうですね。
クリーンやEclipseの再起動も駄目でしたのでやってみます
489 :
デフォルトの名無しさん :2011/08/19(金) 00:36:30.16
立ち読みしていいの選ぶか、Amazonで全部買って読んでいらないやつを送り返せ。
>>490 初心者のうちはわからないような誤植、あるいは不適切なコードが載ってる場合もありますので、このスレで質問しました。
Amazonレビューだとひどい間違いは無いみたいですが。
最近でた入門書を何冊も読んでいて しかもコードの良し悪しが分かる人はあまりいないと思うなぁ
オライリーのが定番なのかと思ってたけど違うの?
まずはリャマ本を読破だな
いきなりオライリーはきついんじゃないかと
>>487 >アプリをエミュで起動すると「"The application (...) has stopped unexpectedly. Please try again!」とよくあるエラーが出ます。
これはcatchしてない例外が発生してるので、ログに警告じゃなくてエラーも出てるはず
逆引きハンドブックのサンプルを打ち込んでいくのが一番手っ取り早いと思う 量をこなしていれば自然と身につく
オライリーの翻訳はどれも訳がおかしい。 原書じゃないなら他のにしたほうがいい。
499 :
484 :2011/08/19(金) 05:33:14.38
>>486 >>496 何度かデバッグかけたところ出てきました。
・java.lang.RuntimeException: Unable to start activity ComponentInfo{com.c00009/com.c00009.Listview}
・java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
ID取得で問題がある様子なんですが
リストビューのidはandroid:id="@id/android:list"と定義しています
なぜ定義しているのにエラーが出るのでしょうか
別のxmlを読み込んでいるんだろ
ソースないからいまいち分からんが 自分でxmlに配置してる要素を取りたいなら idのところがandroid:id="@+id/list" とかじゃないのかな、知らんけど
デベロッパーコンソールでエラー報告が見れるわけですが、 これって機種名は確認できないんでしょうか? 報告する際は機種名出てるのに・・・
503 :
デフォルトの名無しさん :2011/08/19(金) 11:17:07.55
+がないからだな
>>504 フレームワーク側で定義されてるID使ってるだけだから+はいらない
そのエラー出てるって事はListActivityでも使ってるんだろうけど
レイアウト上に無いって言われてる
setContentViewするのが遅いとかその辺かな
プログラムで、「ホーム画面に(自身の)アプリアイコン(ショートカット)」を追加させるにはどのようにコーディングすればよいのでしょうか?
508 :
デフォルトの名無しさん :2011/08/19(金) 17:41:36.62
WebViewにOnLongClickListenerをセットして その中でgetHitTestResult()を使っていま長押しされている 先のhtmlのURLとタイプを取得したいと思っています。 2.2までは正常に取得できているのですが、3.0ではうまく取得できません。 なにか情報おもちのかたは教えてい下さい。
DnDのサポートで仕様変更があったんじゃないの?
510 :
デフォルトの名無しさん :2011/08/19(金) 19:11:11.58
DnDってなんですか?ググってもそれっぽいものがでてこないようで・・・
出てくるけど
カメラアプリを作成しているけど WVGAの端末でsetPreviewSize()メソッドで640x480や320x240などアスペクト比が4:3の指定しても プレビュー画面において画面が引き延ばされてアスペクト比が正しくなりません。 左右に空きができるようにしてプレビュー画面でも正しいアスペクト比の表示になるように設定ってできないのでしょうか? まぁsetPreviewSize()では800x480を指定して setPictureSize()では640x480を指定すれば良いだけだと これだとプレビュー画面と撮影画像が変わってしまって気持ち悪いので できれば統一したかった。
カメラ機能を new Intent(MediaStore.ACTION_IMAGE_CAPTURE) によって利用するとき、内部ストレージに保存させることはできないのでしょうか。 MediaStore.EXTRA_OUTPUT で getCacheDir() 内のパスを指定しても、画像が保存されず、カメラアプリ側でFileNotFoundExceptionが起きているようです。 EXTRA_OUTPUT を空にしても、DCIM内に入ります。
>>516 マニフェストに内部ストレージへのアクセスのためのパーミッションを指定しているのか?
518 :
デフォルトの名無しさん :2011/08/20(土) 00:04:06.21
>>512 ありがとうございます。なるほどDrag & Dropですかな。
ちなみに、これがなんで関係してると思われましたか?
お前らもっとググってから質問に来いよ。 まぁググってわからないことは、ここの連中答えられないけどな。
P&Gって北朝鮮でもギャンブラーなの?
>>515 プレビューを表示しているSurfaceViewの表示領域を
プレビュー画像の縦横比に合わせればいい
具体的なやり方は調べてね
ListViewのタッチダウン時のitem位置を取得したいのですが onTouchEventのgetX()、getY()を使ってitemのRectと 比較するなんて回りくどい事より簡単に取得方法ってありますか?
あるだろ?
すごい初歩的な質問で申し訳ないんですがAndroid SDKインスコして 起動するとエラーが出てくるんだけどどうしたらいいんでしょうか・・・ エラーは↓ WARNING: Java not found in your path. Checking if it's installed in C:\Program Files\Java instead (64-bit). Java was found at C:\Program Files\Java\jdk1.7.0\bin\java.exe. Please consider adding it to your path: - Under Windows XP, open Control Panel / System / Advanced / Environment Variables - Under Windows Vista or Windows 7, open Control Panel / System / Advanced System Settings / Environment Variables At the end of the "Path" entry in "User variables", add the following: ;C:\Program Files\Java\jdk1.7.0\bin\java.exe 'xcopy' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ERROR: SWT folder 'lib\x86_64' does not exist. Please set ANDROID_SWT to point to the folder containing swt.jar for your platform. Pathは追加したはずなんだけど・・・
またこの質問か。 パスに全角文字やスペースを含む場合、ダブルコーテーションで囲め。 もしそれでも不具合出たら、それらの文字を含まないパスに変更。
タイトルバーのバックグラウンドを動的に変える方法を教えてください
超絶初心者ですけどなんか本おすすめしてください
誤爆です スレ汚しすみません
初心者にはメガストアとか快楽天あたりをおすすめしたい
いーむす・アキがむっちり系の絵で好きなんだけど、世間的には人気ないみたいで悲しい。
冬将軍になる前に温めねぇとな
いま時代はtosh
androidの練習として2chビューアを作ってる初心者です。 2chのメニューを管理するクラスとしてBbsMenuクラスを作り、 bbsmenu.htmlの最終更新日時をプリファレンスとして保存しようと考えたのですが、 BbsMenuクラスはActivityクラスを継承していないためgetSharedPreferencesを使うことが出来ず困っています。 こういう処理はActivity内で処理すべきなのか、 BbsMenuクラスでActivityクラスを継承するべきなのか、 他の方法があるのか、初歩的な勘違いをしてるのか…。 知恵を貸してください。
BbsMenuクラスのコンストラクタで渡せばいいじゃん
>>537 BbsMenuをActivity内でインスタンス化するときに、
new BbsMenu(getApplicationContext());
としてメンバ変数に入れる、ということでしょうか?
なるほど、これで試してみます!
JNI の関数名にアンダースコアを入れると実行時エラー・・・? 解決してからぐぐれば情報は見つかるんだけどさ・・・丸一日はまってもーたorz これって FAQ?みんなはまったりしてないのかな?
そもそもJNI関数自体がアンダースコアで区切るという怪しさ全開仕様だし、 パッケージとか関数に使ったら大変な事になるんだろうなというのはうすうす感じてた
ちょっと質問です。 Windows XP 上で NDK 使って開発しています。 C++ 上で、Shift-JIS の文字列を jstring に変換しようと思います。 ・java.lang.String を使う サンプルは見つけたのですが上手く動かず、力不足で詰まっている状態です。 文字コードを変換するだけで C++ から Java のメソッドを呼ぶのは無駄な気がしますが、一般的な方法なのでしょうか? ・WinAPI を使う windows.h を include して、WinAPI で文字コードを変換してるサンプルがネット上にありました。 android 上で WinAPI が使えるはずはないと思うので、こんなサンプルが落ちてるのが既に不思議なのですが… 何か勘違いしているのでしょうか? ・ソースの文字コードを UTF-8 にする 他の環境で使いまわすソースなので、Shift-JIS 以外にはできないです。 ・libiconv を使う いま実験中です…できそうなのですが、日本語資料の少なさから、ひょっとして一般的ではない?と疑念を持ってます。 普通はこうする、みたいな常套手段はないでしょうか。 もしくは人それぞれ工夫してやっている箇所なのでしょうか?
542 :
デフォルトの名無しさん :2011/08/21(日) 17:24:34.53
キチガイ後輪
543 :
デフォルトの名無しさん :2011/08/21(日) 18:50:19.62
webviewにジェスチャーで戻る、進む操作をいれたいのですが、 困って折ります。 webviewにsetOnTouchListener()でOnTouchListenerをセットして onTouchの中にこんな感じでの処理を入れてるのですが、 MotionEvent.ACTION_DOWNの時にsuper.onTouchEvent(event)をやってしまうと trueを返してもMotionEvent.ACTION_UPが呼ばれなくなってしまいます。 一回は読んでくれるのですが、なぜか2回めから呼んでくれません。 なにかごぞんじでしたらよろしくお願いします。
544 :
543 :2011/08/21(日) 18:54:40.66
MotionEvent.ACTION_UPが呼ばれないのはまあどうでもよいのですが、 2度とonTouchが呼ばれなくなるんですよね。
>>543 普通、 GestureDetectorでやるもんじゃないの?
546 :
543 :2011/08/21(日) 19:11:39.82
すみません。自己解決できますた。m(_ _)m
xmlpullparserについて xmlを読み込ませてlistに表示させているのですが エミュレータ(2.2)では表示されるのに 実機(2.2)では表示されません listは表示されていても中身が表示されません エラーも起きないです 何か考えられる原因があればなんでもいいので教えてください お願いします
WebView(API Level 7)にて、リフレクションを使ってemulateShiftHeldを呼ぶことで 文字列の選択を開始できますが、これの終了(コピーされずにキャンセルされた場合含む) を検知することはできないでしょうか?
>>648 Androidはwindowsじゃないんやでぇ〜♪
Livewallの壁紙切り替え設定画面を作ってます。 通常のライブ壁紙なら、onSharedPreferenceChanged()でリストなどを選択し、 drawFrame()なんかで再描画してあげればプレビュー画面でも、ちゃんと画像が 切り替わると思うのですが、 GLEngineSurfaceを使って作成している場合、どこを再描画してあげれば 良いのでしょうか。 描画に関係ありそうなonSurfaceCreatedあたりも試してみたんですが、 駄目で詰まってしまいました… エスパーさん助けて
やだ
553 :
デフォルトの名無しさん :2011/08/21(日) 22:52:31.26
エスパー伊東
>>541 >java.lang.String を使う
これがオヌヌメだな。new String(バイナリーデータ,"Windows-31J")。これでおk。
>>554 馬鹿だろお前。
sjisをバイト配列にしておいて
sjisstr = env->NewStringUTF("MS932");
clazz = env->FindClass("Ljava/lang/String;");
meth = env->GetMethodID(clsj, "<init>", "([BLjava/lang/String;)V");
(jstring)env->NewObject(clazz, meth, バイト配列, sjisstr);
あとは適当に解放。
556 :
デフォルトの名無しさん :2011/08/22(月) 02:22:24.97
アンドロイドのアプリ開発ってアンドロイド持ってなくても出来る? アンドロイドエミュレーターがあったと思うけどそれで出来るのかどうか・・・
何らかのアプリを作ることは可能 ただし、実機でちゃんと動くかはわからない あとエミュレータは動作が重い
スワイプでアクティビティ間の移動をする用のクラスとかありますか
>>556 エミュレータは実装している機能と実装してない機能がある。
もう実機の白ロムけっこう安く手に入るよな 2,3持っててもいいなじゃない? バージョンナンバーは低くなるかもしれんけど
質問です。 タブで表示したactivity内で、リストビューでリンクページを作成しています。 リスト押下で別activityを表示したい(タブは選択出来る状態にしたい)のですが、 現在リストビュー表示までは出来ているのですが、リストを選択しても反応がありません。 通常のstartactivityによる起動では、何か問題があるのでしょうか。 また、この方法で、タブ表示のままactivity表示となるのでしょうか。
>>561 onListItemClick()が呼び出されているか?
呼び出されないならListViewの設定がおかしい、呼び出されるならstartActivity()の呼び出しがおかしい。
もちろん別なActivityとして表示される。
ギャラリーへのintentに関する質問です ギャラリー全体の画像をグリッド表示させるintentは分かったのですが これを指定のフォルダのみ表示させる方法はないでしょうか? uri parse では無理でした 仕様的に無理なのでしょうか? よろしくお願いします
NDKで、 Javaー>Cー>Java と呼び出すのは問題なさそうだけど、 Cのみで走っているスレッドからJavaを呼び出すのはどうやるんでしょうか? JNIEnvがJava側のスレッドに関連付されてるようで、どうしたものやら…
よろしくお願いします。 ログインしていろいろできるタイプのアプリを開発しています。 データはAPIから取得し、ユーザー認証はログイン時にセットしたCookie(セッションid)を使って判定しています。 データを取得するときは問題ないと思うのですが、POSTメソッドの通信のときのCSRF対策はどのように行えばいいのでしょうか? CSRF対策用のトークンを発行するAPIをたてて、トークンを取得→データと一緒にPOSTという流れでOKでしょうか? アプリというよりはWebセキュリティに近いですが、ご存知の方がいるかと思いお聞きしました。
>>568 あ、なるほど。
>>541 の
> 文字コードを変換するだけで C++ から Java のメソッドを呼ぶのは無駄
というのは正しいよ、ってこと?
でも
>>554 と
>>555 でそんなに変わると思う?
というより
>>555 もJavaのメソッド呼んでるんじゃ?
これってどういう意味でしょうか? SQLさっぱりっす "SELECT _id, title FROM table WHERE title LIKE '%' | '?' | '%'", new String[]{"something"});
>>570 その文は以下のSQLと等価。
SELECT _id, title FROM table WHERE title LIKE '%something%'
あとはselectとかwhereとかlikeとかでググれ。
関係モデルを理解しないとSQLを本当に理解はできない
>>573 PC側のポートをフォワードしてるんだからlocalhostじゃないの?
>>574 ありがとうございます、おかげで接続は何とかうまくいきました!
string.xml中でコロンを使うとリソースの読み込みのタイミングでアプリが停止します。 <string name="id_value">ID :Value</string> <string name="hoge">hogehoge</string> に対して getString(R.string.id_value)や、getString(R.string.hoge)とすると停止します。 XMLの値ではコロンは使えないのでしょうか? 解決方法おしえてください。
エスケープしろ
>>577 ありがとうございます。
<string name="id_value">ID :Value</string>
としたらうまくいきました。
ちょっとプログラミングから離れるんだが、アンドロイドの署名って何の意味があるの? 普通署名って、○○が作ったものだって証明して、じゃあ安心だな!って者でしょ。 自分で自分で署名して、○○が作ったものです。って意味がわからねくね。 リバースエンジリニアリングを防ぐkeyの役割があるわけでもなし、 ユーザーがダウンロードして、実行するまでに証明の情報が表示されるわけでもないし、 適当に署名しても、それがそのままマーケットに公開できるわけで、本当に意味がわからんのですが。
いわゆるオレオレ証明ですな。 署名者の同一性は確認できるんじゃね?つまりなりすましは防げる。 いつ役に立ってるのかは知らんけど。
確かになりすましは防げそうですね。 ですが、それは任意でアカウントの情報を公開して、 ○○さんの作ったアプリ一覧が見れればそっちのほうがわかりやすくないでしょうか? それとも、アカウントのパスを忘れたので、新しいアカウントでアップしました>< とかいう成りすましでも想定しているんでしょうか。
全く関係ないアプリをぼけっとしてインストールしたら既存のアプリが上書きされて、そのアプリだけがアクセスできるヤバい情報盗んだりとかでは しらんけど
ようは2chのトリップみたいなもんか
・署名者の同一性の確認 ・署名者以外によって改竄されていないことの確認 の2つのためでしょ? 署名者が誰かの確認には認証局への登録が必要
>>584 marketの認証だけでも満たせるよね、ということじゃあ?
パーミッション管理で、異なるアプリで同じ作者ってのを確認するのに使ってるから、どのみち署名は必要だよ
graphics.pathの内部に、 指定した座標が含まれるかを 知るには同ずれば良いのでしょうか? containsメソッドがないようなので困ってます、、、
できた!ありがとう。 regionって短形だけかと思ってました。
おまえさん、「くけい」って知ってるかい?
方形という単語をつかうのがなぜかいやでいつも矩形、という単語にいいかえてしまう
なにいー!10年以上短形だと思っていたぞwww
>>592 富井副部長は分かるが氏に絡むエピソードは分からん
富井副部長は方形だったと!
そして短形だったと
短小包茎
>>593 まあ恥をかいて気付けたのが2ちゃんで良かったじゃないかw
>>585 マーケットはリリースしてる人のアカウントが同じってだけで署名は関係ないぞ
同じアカウント無いで異なる署名使っても良いし
別のアカウントで同じ署名を使っても良い
プリファレンスファイルなのですが アンインストールすればファイルは削除されるはずなのですが、アンインストールしても値が残ったままになってしまいます 実機のみの現象で、実機のため直接xmlを見れないのですが ログを見るとアンインストールしても消えていません こういう現象が起きる条件には何が考えられますでしょうか? 教えてください、よろしくお願いします
ちなみに明示的に消すことは可能でした
BroadcastReceiverを使っているのですが、 1つのintentFilterにaddActionで、intentを使いしているのですが、 Intent.ACTION_WALLPAPER_CHANGEDや、Intent.ACTION_BATTERY_CHANGEDは BroadcastReceiverが反応するのですが、 ACTION_MEDIA_REMOVEDや、ACTION_SCREEN_OFFは反応してくれません。 何かパーミッションの設定など必要なのでしょうか。
VMでandroid-x86-2.2-generic.iso というx86版androidをサクサク使いたいんですが HDイメージの hd.vmdk をwindows側からアクセスして .apk ファイルを書き込む方法ないですか?
>>600 実機の機種とファームウェアのバージョンは?
たぶんファームウェアバージョンが2.2.1の
GalaxyS固有の
不具合だろうから
もしそうならユーザーにファクトリーリセットしてもらうか
最新ファームウェアにアップデートしてもらうしか
解決方法はない
>>602 動的なBroadcastReceiver用意しないとダメ。もちろん動的生成したプロセスが死んだらレシーバーも停止する。
>>579 自前アプリをadb経由じゃなくapkのコピーで導入する場合、
同じ証明書から作成された署名がついてないと同じアプリの別バージョン
という判定にならないみたいだ。
同一作者が作った同一パッケージ名のapkであれば同じアプリという判定基準だと思われる。
第三者がパッケージ名がかぶっている偽物を作れなくする仕掛けなんじゃないかな。
607 :
442 :2011/08/24(水) 01:12:24.60
無料で出してたアプリを有料化したら無料の時にDLしてた人はそのままアップデートとかできる? ベータ版で出しといてまとまってきたら有料化して、使ってくれてた人にはそのままアップデートして欲しいんだけど
名前欄消し忘れたorz
公開後に有料⇔無料の切替は不可 アプリ内課金で制限解除とかなら可能
610 :
デフォルトの名無しさん :2011/08/24(水) 02:29:15.88
Androidアプリとi‐phoneアプリって 作るのどっちが難しいですか? 難易度的にどんな感じでしょう?
>>610 iPhoneアプリは開発にMacが必要だったり
実機に動かすのに登録して年貢が必要だったり
面倒が多いよ
それを置いておいても、JavaもObjective-Cも知らない人なら
Javaの方が難易度低いかな
613 :
デフォルトの名無しさん :2011/08/24(水) 03:07:17.12
iPhoneアプリマジおすすめ
AppStoreはないわ
この流れでついでに聞いちゃうけど、 Developer's GuideみたいなのはAndroidとiPhone、どっちが充実してるの?
君の英語力次第
いや英語なのは当然想定してんだけど。てかAndroidのも英語だし。
619 :
デフォルトの名無しさん :2011/08/24(水) 09:51:11.61
アンドロイド携帯が変形して剣になるアプリを作りたいのですがどうしたらいいですが? ちなみに刀身は実体剣とビームソードを使い分けられるようにしたいです
あんまり面白くなかったです
>>619 まずは体内のミディ=クロリアン数を調べて下さい
>>619 ggrks
ってか電池食いまくるからやめとけ。
今のバッテリー容量だと変形中にすぐバッテリー切れちゃうから 駄目らしいよ
オプティマース!
タブActicityにAというActivityが登録されてるとして、 Aに配置してあるボタンを押すと、BというActivityに移動するようにしたい。 そのまま移動するとタブのレイアウトが消えてしまうので、 タブを維持したまま、A→Bに移動する方法を知ってる方教えてください。
フラグメント
>>627 知らなかったからググってみたけど、android3.0からの機能なのか
それ以外に実装方法は無い?
2.xにバックポートあるよ
コンパチライブラリ使え 今から新規で作るのに1.x系のTabActivity使うのは有りえん
質問です。 resの中の「drawable-*」というフォルダに画像を入れてそれを描画しようとしたら、 自動的に画面の解像度に合わせて画像が拡大縮小されますよね。 「drawable-mdpi」フォルダに画像を入れて、001DL(解像度480x800)で その画像を描画しようとしたところ、元サイズの1.5倍になるはずだと思うのですが、 元サイズのまま描画されてしまっています。 解像度が同じであるNexus Oneや、横幅が同じXPERIA SO-01Bではちゃんと拡大されているのですが、 いくつかの機種で確認した中でこれだけが拡大されない状態です。 原因や解決法に心当たりはないでしょうか?
他のはhdpiで、streakだけmdpiなんだぜ?
ありがとうございます。 縦横のピクセル数が同じでも、dpiが違う場合もあるってことですか・・・。 修正するの大変そう。
>>633 dpi(dot per inch)だから
解像度が同じでも大きさが変われば変わる
DELL Streakはぎりぎりmdpiだったはず
質問です。 現在ホーム画面自体ををFramelayout等を使って作成中なのですが、 自作のレイアウトにインストールされているウィジェットを表示させることは可能なのでしょうか? インストールされているウィジェットのコンスタント名までは取得できたのですが。 それをレイアウトに動的に追加できたらと考えています、 方法をご存知の方いましたら教えてください。
>>635 WidgetHostか何かを実装したらいけたはず
>>637 それはWidgetを作る側の話じゃ?
FrameworkのソースにLauncherってのがあって
それが標準のホームアプリだから
その中でWidgetHostを使ってるところを見ると良いかも
昔、上のソースを参考にしつつWidgetHostを実装して
アクティビティの中にWidgetが置けるのを確認はしたんだけど、よく覚えてない
おれもActivityGuroupで似たようなことやろうとしたことがあるが
労力と時間を無駄にするので
>>629-630 の言ってるとおりコンパチビリティパッケージ使ったほうがいい。
ADVマネージャからライブラリ探せば出てくるから。
640 :
635 :2011/08/25(木) 10:45:26.89
>>638 ソースを入手しましたがlauncherが見つかりません・・・・・・
いわゆる"com.android.launcher"って奴ですよね?
ソースが違うのか参照方法が間違ってるのか。
質問させてください。 android上でDTMFを鳴らせるアプリを作っています。 下記の要領で音は鳴る様になりましたが、 鳴らす時間(ボタンを押すと0.5秒間鳴る) を設けるにはどのようにすればいいでしょうか? package iPentec.SimpleBeepApplication; import android.app.Activity; import android.media.AudioManager; import android.media.ToneGenerator; import android.os.Bundle; import android.view.View; public class SimpleBeepApplication extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void onClick_Button0(View view){ ToneGenerator toneGenerator = new ToneGenerator(AudioManager.STREAM_SYSTEM, ToneGenerator.MAX_VOLUME); toneGenerator.startTone(ToneGenerator.TONE_DTMF_0); } }
>>642 toneGenerator.startTone(ToneGenerator.TONE_DTMF_0, 500);
一番下の行を↑にすれば良いのでは?
500の箇所はミリセックです。
NativeActivtyではないNDKアプリの開発で、JavaVMを取得するには どうすれば良いでしょうか?よろしくお願いします。
JNI_GetCreatedJavaVMs() というかNDKがどうのこうの言ってる奴らはAndroid関係ないからJNIスレに行け。 ちゃんと該当スレ使ってやれよ。
知らない人にとっちゃどっちもAndroid用アプリのプログラミングだからな 大目に見てやってください
647 :
デフォルトの名無しさん :2011/08/25(木) 15:06:55.30
現在SurfaceViewを利用したゲームを作っています。 タイトル画面からゲーム画面へはIntentで遷移して 遷移したactivityクラスから、SurfaceViewを継承したクラスを呼び出して描画しています。 そのクラスでthreadを起動し、run内でゲーム処理をさせているのですが ある条件が来た時にタイトル画面に戻る処理を書きたいです。 現在のActivityを終了させてやればタイトル画面が表示されると思うのですが 継承しているのがSurfaceViewな為、run内でfinish()を呼び出して終了させることができません。 何か終了させる方法はないでしょうか? BACKキーを押せばタイトルに戻る事は出来るのですが、出来れば何もしなくても自動で戻りたいのです。
前のほうでadbでポートフォワーディングって話が出てるけど これってSDKインストールしてる人にしか使えないよね adbなしでフォワーディングする方法ってないのかな
逆引きハンドブックのListViewの部分なんだけど、 ArrayList<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>(); このソースの意味がよく分からない。SQLの領分なのかな
えーと、JAVAの勉強をしろとしか。
651 :
649 :2011/08/25(木) 17:27:22.54
Javaなのか、初めてだから分からなかった ありがとう
初めてだからじゃなく、おまえの勉強不足だからだろ。ゆとりが。
それ見てJavaで書かれてることすら分からない人はこのスレに来るの早いです
ActivityのonCreate内で数秒間だけBroadcastReceiverを起動(registerReceiver)し、 レシーバーに引っかかった場合はその後の処理を継続し、 レシーバーに引っかからなかった場合はfinish()を呼出す処理を行いたいと考えています。 具体的にどのような実装方法があるでしょうか? ご教授のほどよろしくお願いします。
SDカードの状態についてですが、 SDカードが存在していなくても Environment.MEDIAMOUNTEDで比較してもtrueが返ってきてしまうのですがなぜでしょうか? android2.2.1の実機を使用しています よろしくお願いします
Galaxy Tabだったかな。内部ストレージを外部ストレージとして扱うことのできる端末がある。
>>647 じゃあタイトルなactivityを再度startするとかは?
>>656 Galaxy Sもそうだね。
てかあれ「扱うことのできる」だったのか…「扱わざるを得ない」かと思ってた、Android的に。
>>640 /packages/appsの中
>>647 これ系の質問って多いんだけど
BからAのメソッドを呼びたいんだったらBにAのインスタンスを渡せ
FLAG_ACTIVITY_NO_HISTORでヒストリーされないようにはしたけど アクティビティは積み上がってるらしくバックボタンを積み上がった分だけ押さないと 終了しません A(トップページ)⇒B-1⇒B-2⇒B-3⇒C⇒D Cの段階でバックボタンを押すとAに戻る Dでバックボタンを押してもAに戻る そしてまたB開始させてCに行き そこで1回バックボタン押すとAに戻るがもう一回押しても終了にならない
>>654 onCreateの処理を数秒待たせるみたいな意味にも
とれるが、それは無理じゃないか?UIスレッドは
固まるとdalvikだか何だかから強制終了されるし。
そうじゃないならhandlerでもタイマーでもthreadでも何でも
お好きにどうぞ。
やりたい事書けば別の案を出してくれるとおもうぞ。
エミュを1.6に設定して試そうとすると DDMSのエミュターゲットが消えたり the user data image is used by another emulator. aborting というエラーメッセージが出たりするんですが、これはバグですか? 1.6での動作確認ができないです。
>>662 俺もそれなった
cドライブ直下にSDK置くよう再インスコしたらなおった
やっと聞くだけじゃなくて答えることができたわい
>>662 普通に使えるけど・・・
エラーの内容は既に起動してるよってエラー
タスクマネージャーとかでエミュレータ全部終了させてみたら?
>>645 コンパイルするとエラーになる。
ググるとサポートされてない感じがちらほら
>>663 >>664 Cドライブ直下に置きなおしてみました。
プログラムの方は動くけどDDMSでファイル操作しようとしたとたん
フォルダとエミュターゲットはやっぱり消えます。
SDKフォルダの名前にスペースとか入ってない? program filesのスペースがヤバイからC直下ってことだった思うんだけど
スペースの件は理解してます。 ファイルを読み取るプログラムなもんでDDMS使えないのがいたいです。
>>658 Android上からは大差ないと思うよ。
仮想環境がディスクイメージもSDカードもマウントできるのと同じで
ハードウェアがそういう実装だったらOSはそう見えるよねって話。
海外の激安タブレットにもSSDのみの外部スロットなしってのがあったから意外と数あるんじゃないかね。
csvファイルをassetsフォルダにあらかじめ用意して、アプリ初起動時にDB作成してコピーしたいのだけど 資料探しても見当たらない。どなたか方法を教示しているサイトあったら教えて下さい。
自分で言っている通りのことをすればいいだけだけど何がわからない?
>>659 遅くなりましたがありがとうございます!
解決できました。
頭が固くなってたみたいで、インストラクタで渡されるContextから何か出来るはずだ!
ってずっと考えてました・・・
単純な事でしたが助かりました。
673 :
デフォルトの名無しさん :2011/08/26(金) 13:26:44.49
IDとパスワードをプリファレンスに保存して自動ログインするようなアプリを作りたいんだけど パスワードを安全に暗号化するにはどういう手法がいいですかね? cryptoを使えばBlowfishとかで暗号化できるってのは調べたんだけど 暗号/複合の共通鍵をどうすればいいのか・・・ 鍵も一緒にプリファレンスに保存したら暗号化の意味ないし、 ソースコードに定数として鍵を収める方法も考えたけどapk逆コンパイルされたらバレるし
通常は自分のアプリからしか読めないから気にしない。 端末内で完結させる必要があるんだったら、それ以上の対策は気休め。 気の済むようにすればー
スタンドアロンで管理する限り、ソフトウェアだけでは安全は担保出来ない 残念ながら、逆コンパイルされたら死亡、よりマシなやり方は存在しない
気休め程度にしかならんね
アプリ起動中に端末の電源を落としたときって、 ActivityのonDestroyとかonStopとかは呼び出されない? そうであれば、何か代わりになるようなものはあるでしょうか?
678 :
デフォルトの名無しさん :2011/08/26(金) 15:39:20.80
assetsフォルダ内のファイルの更新日を取得することってできますか?
>>667 DDMS使って自分で確認してみたらいいかと
使い方が分からないならついでに覚えるべき
>>677 ブロードキャストのaction_shutdownが使えるかな?
試してないけど。
電池抜きじゃなければいける
電池抜きやカーネルパニックじゃない限りは呼ばれるだろう 絶対呼ばれるということに依存してリカバリしないコードもまずいが
>>683 確かIntentは飛んでくるけど、電源断される処理は止まらないから、
何かやるにしても素早くやらないといけなかったはず
そもそも電源落ちるときに何かやらなきゃいけない状況ってのは考え難いんだけど…
TextViewを横一列に連続で表示して、それぞれ色を変えようとしているのですが、 なぜか勝手に改行されてしまいます。 具体的には下のような感じになります。 textview textview textview textvi ewtext view te xtview 何か対策方法はないでしょうか?
686 :
685 :2011/08/26(金) 19:57:57.82
ずれてしまいました。 下のような感じです。 textview textview textview textvi ewtext view te xtview
SDカード上にあるtest.jpgを画像ビューアを読み込みたいのですが、 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("file:///sdcard/test.jpg")); intent.setType("image/jpg"); startActivity(intent); とやってエラーが出てしまいます。なぜでしょうか?
>>687 エラーメッセージをちゃんと読めば分かるんじゃないかな
>>688 ギャラリー側でエラーが出るんですよね…
呼び出したアクティビティでのエラーメッセージっていうのはどうやって確認できるんでしょうか?
>>687 SDカードのパスは決め打ちしないで
Environment.getExternalStorageDirectory
を使うべき
/sdcard/じゃない環境もある
691 :
デフォルトの名無しさん :2011/08/26(金) 21:41:26.42
>>659 ようやく見つかりました。
ありがとうございます、
存外でかいソースだったので地道に送ってみる
>>661 レスありがとうございます。
やりたいことは、ずばりHome2Shortcutのような動きです。
ホームキーを押してその後何も無ければ別ホームアプリを起動。
ホームキーを押してその後再びホームキーを押したら自アプリの起動を継続。
やり方はいくつかあるとは思うのですが、どうにもうまく実装が出来ず…。
>>678 asset manager(だったかな?)経由でFileが使えなかったかな?
>>689 逆のギャラリからインテント受けるアプリ作るとわかるよ。
たしか、media:とかじゃないかな?
3D表示ができる端末がありますが、あれは3Dモデルをそのまま目で見えるようにしてるわけだから、 たとえばスターフォックスみたいな3Dゲームを作れば、奥行きを持ったシューティングとして見えるってことですよね?
エミュ2.1で数字キー押した時 dispatchKeyEventのKeyEvent.ACTION_DOWNの直後に KeyEvent.ACTION_UPまで呼ばれてしまうんですがこれはどういうことでしょうか? もちろんキーは離してません。 英字キーや古い1.6ではその症状はなかったです。
調べてみてなぜか 2.1だけキーのリピートが異様に短い設定みたいです。
>>696 素材と描画は全部自前でやるんだよ。
3D対応端末はディスプレイ側に視差バリアとか持ってるから裸眼で見えるだけであって
普通のディスプレイでもアナグリフで描画すれば赤青メガネで見える。
もちろんView側が立体視の情報を取得したりするために拡張されてるが。
TVにあるような2D→3D変換は本来、全部自前でやることを専用のハードウェア使って描画時に動的に生成してるだけ。
>>696 左目用、右目用の映像をそれぞれレンダリングしないといけないんじゃないの
Android側で3D液晶サポートしない限り自作アプリで対応は無理なんじゃね?
終了ボタンを作ったのですが finish();で終了しません。 どうするのですか?
>>700 3D液晶積んだ端末だとSurfaceViewが拡張されてるけど
その辺操作できるようなライブラリが公開されてるかどうかは知らん
自己解決します田
>>702 シャープのSDK見るとベンダの個別対応っぽいよ。
ハードウェアの機能をそのままラップしたかのようなAPIだった。
705 :
687 :2011/08/27(土) 01:02:08.63
相談に乗ってくださってありがとうございます。 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(path)), "image/jpeg"); startActivity(intent); でうまく行きました。なぜかsetData()とsetType()に分けたりするとうまく行きませんでした。
706 :
697 :2011/08/27(土) 01:03:35.77
2.1実機の数字キーの挙動がdown後即upなのか 2.2と変わらず離すまでupしないのか わかる人いませんか?
HTMLのように <ol> <li>まどか</li> <li>僕と契約して魔法少女になってよ</li> </ol> で 1.まどか 2.僕と契約して 魔法少女になってよ ↑改行されたときこのインデントができる こういう表示にする方法はあるのでしょうか?テーブルレイアウトでやるしかないでしょうか?
自分がどこの板にいるのか分からなくなった
ごめん誤爆った
>>707 なんでテーブルレイアウト?
その発想がわからない
普通にテキストじゃ駄目な理由は?
>>707 何がしたいのかよくわからんが
HTMLで書いてWebViewで表示してしまうというのはどうだ
改行したテキストが番号欄にかぶらなくしたいんだろ?
サーバからファイルをダウンロードする際の、プログレスバー(Horaizontal)を作るのに困ってます。 ファイルサイズを最高値に設定するまではいいんですが、どの割合でバーが進むようにすればいいんでしょうか?
setMaxに目標のファイルサイズを設定したなら 現在まで受け取った分のサイズをsetProgressで随時設定すれば勝手に 割合考えて進んでくれる。という仕様だったと思うんだが。
ジョルテみたいにフリックに合わせてactivityを横スクロールさせるのはViewFlipperで実装可能でしょうか ?
鯖落ち記念
717 :
707 :2011/08/27(土) 19:05:19.88
>>712 そういうことです。
テキスト自体は 「僕と契約して魔法少女になってよ 」で改行なし
1:僕と契約して魔法
少女になってよ
↓
1:僕と契約して魔法
少女になってよ
こういうふうに表示したいわけです。
>>714 それでやってるけどハンドラ通知が結構遅くて通信速度速いとバーがちょっと遅れる
>>718 100kバイトのファイル落としてるからって100k回通知したりしてないよな?
>>719 1024byteで読んでる
もうちょっと増やした方がいいか…
通知時にハンドラーに前の通知残ってたら削除するとか
それは量じゃなくて時間でやるべきなんじゃね。 量でやるにしても通知間隔が一定時間以内なら間引くとか。
>>720 100Kだと3Gでも1秒ぐらいでしょ?
確かwifiで数Mを数秒ぐらいだった記憶あるんで。
1秒で通知100回はhandlerの速度考えると無謀なんで
間引くべし。というかその程度ならわざわざ凝ったプログレス
出さないで普通のスピナー(だっけか?)にするわ。
あー、別に100Kとは言ってないか。スマソ。 まあ少ないサイズなら、って意味で。 1024byteは変える必要ないと思う。たしか2048だか 4096以上は読み込まなかったんで(inputStreamね)。 読み込み速度も1024が一番早かった記憶がある。
4096だな。けどこれ実装依存だと思うぞ。 1024が一番早いのも実装由来だし。
726 :
720 :2011/08/28(日) 00:22:29.65
おお...なんか色々とアドバイスありがとう めんどくさくてくるくる回るやつでお茶濁そうと思ってたけどやっぱ頑張るわ
OpenFeintの質問です。 ゲームからダッシュボードを呼び出した後、ゲームに戻れなくて困ってます。 今は、呼び出すときは Dashboard.openLeaderboard("1234567"); で移動しています。ここでexitをするとホーム画面に行ってしまいます。 マニュアルを読み、OpenFeintDelegate()でなんとかなるかとおもいきや、 onDashboardDisappear()でintentでのcallコードを書いたら、 もどれはしたものの、今度はメニューを開く度にintentが呼ばれてとんでもないことに‥。 Delegateにはexit二相当するものがなさそうですし、 ゲームに戻るにはどうすれば良いのでしょうか?
728 :
707 :2011/08/28(日) 04:48:12.02
魔法少女はまだですか?w やっぱテーブルでやるしかなさそうだなあ
魔法少女始めました
「2.」と「僕と契約して魔法少女になってよ」が別のTextViewならalign指定するだけじゃ?
画像(ImageView)をピンチで拡大・縮小して表示する画面を作成しています。 画面上に画像以外にも複数のボタンをFrameLayoutを使用して配置していて、 画像の拡大・縮小時に同時にボタンも、拡大・縮小されて、かつ 画像とボタンの相対的な位置も変わらないようにしたいと考えています。 そこで、質問なのですが LayoutまたはActivityごと拡大・縮小して表示する方法ってありますでしょうか?
それ拡大・縮小されすぎると操作不能に陥るよな。 ハードウェアキーが使えるとは想定できないからキー押して デフォルトのスケールに戻す操作も期待できないからユーザー詰むんじゃね?
拡大率・縮小率に上限を与えてボタンが押せなくならないようにするのと ダブルタップで1倍に戻すように処理を考えています。
>>714 ありがとうございました。
なんとかいけそうです。
webviewに表示するコンテンツが少ない場合でも サイズを最低でも画面いっぱいに広げるようにすること できますでしょうか? いまは、下が切れてしまってます
drawableで画像にあとから透明度を設定することはできますか? あらかじめ透過させた画像を別に用意するしかないですか?
データベースの事で質問です。 辞書アプリのようなもので、同一dbファイルに単語TBLとマイリストのような個人TBLがあるとします。 この時、アプリのアップデートで単語TBLの更新のためにdbファイルそのものを書き換えるとして それに伴い個人TBLも消えると思うのですが、 これを回避するには単純にdbファイルを単語と個人で分ければ問題ないという認識であっていますでしょうか?
>>738 無い
>>739 アップデートでファイルを書き換えるんじゃなくて
テーブル更新するようにすれば良いんじゃ
741 :
739 :2011/08/28(日) 22:41:11.91
アプリ更新時にテーブルのみの更新って可能なんですか?
どうやってデータベースの管理やってるか知らないけど、 SqliteOpenHelperとか使ってれば 任意のSQL実行できるから好きに更新できるよ
>>700 system.exit(0)で終われるという説もある
が、それだと終わらないorメモリが適切に開放されてないとの噂もある
結局どうすれば全Activityを正しく終了させれるかは謎
ライセンス検証ライブラリのサンプルのisFinishing()ってどういう意味なのでしょうか。 問題なくallow()とdontAllow()で分けられており、動かせて入るのですが isFinishing()が動作に必須、というより推奨している書き方なのでしょうが、 意味がわからずそのままでいいのか削ったほうがいいのかわかりません。
SDKのmarket_licensingのsampleプロジェクトのMainActivity
タブの文字を変更する方法はありますか?
747ですけど何か言葉足らずでした タブの文字を動的に変更する方法はありますか?
>>748 どこのタブ文字だ?
ソースか?文字列内か?TextViewか?
そもそも変更ってどういう意味よ
>>744 android developersにあるドキュメント参照。
>>749 TabSpec.setIndicator("...")で指定できる部分のことです
753 :
714 :2011/08/29(月) 13:23:06.29
すみません。 AndroidアプリでDB検索したい場合、 ASPのページでJSON形式のデータを返すようにしたらOKですか? AndroidアプリからASPのページにPOSTする。 ↓ ASPのページでPOSTしたパラメータを使って検索した結果を JSON形式で返す。 ↓ Androidアプリが受けたJSON形式の検索結果を展開して画面に表示する。
756 :
デフォルトの名無しさん :2011/08/29(月) 13:41:32.85
あのさ、calendarからmonthをゲットして、プレファレンスに保存して、出力すると、8月なのに7月になるだがなんで?他の日付と、時間とかは正しいんだけど、だれかドエムな人おしえてぇーーー!
758 :
753 :2011/08/29(月) 14:07:32.59
>>755 ありがとうございますm(_ _)m
なお、わたくしは714さんではありません、ごめんなさい。
759 :
デフォルトの名無しさん :2011/08/29(月) 17:49:10.22
PreferenceActivityでSpinnerっぽいやつ使えないの?
>>756 俺もよく知らんけど日付関係のサンプルには
month+1ってあるからそういうことじゃね
最初の月を0でスタートしてる方がいろいろ扱い安いしな
StringBuilderで行間を設定する方法ってありますか?
>>705 別々に設定すると設定してない側がnullでクリアされる
>>762 StringBuilderはレイアウトを管理するクラスじゃない。
>>764 StringBuilderでも出来ました。
どうもでした。
Java入門系の質問ってこのスレの範囲外でいいんだよね?
>>759 複数項目からの選択はListDialogがデフォルトだね
769 :
687 :2011/08/29(月) 20:22:49.10
>>761 …と言いつつ、日は1から始まるところにいつも欺瞞を感じる
>>771 日本だと1月,2月,3月だけど、英語だとJan, Feb, Mar,...なので0始まりなんじゃないかなと予想
>772 睦月、如月、弥生みたく数詞っぽくないってことかあ まあ2か月ねじこんだ後のSeptemberからあと辺りは逆に紛らわしいことになってるけどw
>>771 月は名前の配列の引数に使うことがあるから
まあ、Cの仕様にならっただけだろうけど
ListViewのセルに以下のレイアウトを使って表示しているのですが、
ImageViewで表示しているアイコンがどうしても上下の中央に出てくれません。
alignParentTopとalignParentBottomを指定しているので、RelativeLayoutの高さに、
ImageViewが引き延ばされ、その中央に表示されると考えており、
Eclipse上のレイアウトエディタでは実際その通り表示されているのですが、
実機やエミュレータで表示してみると、ImageViewのサイズ自体が画像サイズのままとなっています。
RelativeLayoutの高さの数値を指定してやると、理想の表示になるのですが、
TextViewの内容によって高さを可変にしたいのでこのような指定にしています。
RelativeLayoutの仕様として問題ない設定だと思っているのですが、なにか誤りがあるのでしょうか?
<RelativeLayout xmlns:android="
http://schemas.android.com/apk/res/android "
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight">
<ImageView android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:src="@drawable/icon"
android:scaleType="center"
android:background="#778899" />
<TextView android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/icon"
android:layout_alignParentRight="true"
android:background="#998877" />
</RelativeLayout>
>>775 確かにImageViewの高さ方向が拡縮されないね
どうしてもRelativeLayoutじゃないといけない理由がなければLinearLayoutにしちゃえば?
↓これでちゃんと表示されることは確認した
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android "
android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@+id/icon" android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/icon"
android:background="#778899"/>
<TextView android:id="@+id/textView" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:gravity="center_vertical"
android:background="#998877"/>
</LinearLayout>
777 :
756 :2011/08/30(火) 07:16:01.24
そーゆーことすか。 Javaドックみときますわ。 配列で0始まりってことっすね。 あざーす。みなさんあざーす。 じゃー、単純に+1して修正します。
androidアプリをアイポンに入れる方法ないですか?
iPhoneとかで使っているCPUは、ARM系なんだよな。
781 :
デフォルトの名無しさん :2011/08/30(火) 15:01:25.92
自分で作ったapkを試しに逆アセンブルしてみたところ一つのメソッドだけが // ERROR // public final String Method(Integer integer) { // Byte code: // 0: new 180 } のようになってます(実際にはもっと長いです) 動作に問題はないのですが何らかの対処をしたほうがいいでしょうか? またどういう対処をすればいいでしょうか?
何のために対処するの? 逆汗なんて普通必要ないんだからどうでもいいだろ
いや、なんかエラーってなってるから直したほうがいいのかなーと思って。 動作に問題ないから大丈夫ですよね。無視することにします。
誰か実機くれ というかコンテキストってなんぞ
>>779 これでiPhoneをandroid化してそれで実機デバッグできるかな?
ドライバがないから無理か…
OpenGLES 1.1でスキニングする場合はソフトウェアスキニングに限られますか?
質問させてください。 NumberFormat を用いてロケールごとに小数点とカンマの表示を切り替えています。 APIレベル7以上のエミュレータではロケールごとに正しい表示をしてくれますが、 実機(T-01C Android2.2.2)だと正しく表示されません。 これはなにが原因なのでしょうか?
Localeの情報が無いんじゃ 国内の端末ってほとんどが日本語と英語以外選べないよね?
789 :
775 :2011/08/30(火) 20:34:13.83
790 :
787 :2011/08/30(火) 21:05:49.88
>>788 locale = Locale.GERMANY;
NumberFormat nf = NumberFormat.getInstance(locale);
のようにテストしていました。
デバッグしてみると、エミュレータと実機での実行時の変数nfの中身のフォーマット形式が違っていました。
いろいろ調べてみましたが、自分ではわかりませんでした…
なお、どのように違っていたのか 詳細については教えるつもりはない
お世話になります。 エミュレータの設定画面で、「エミュレータ・コマンド行の追加オプション」が 突然表示されなくなってしまいました。 予想される原因がありましたら、何でも良いので教えてください。 よろしくお願いします。
792です。解決しました。 「デバッグ構成」ダイアログの縦幅が小さくなってただけでした。 すみませんでした。
>>791 変数nfの中身について違いを述べず、申し訳ありませんでした。
以下のような違いがありました。(locale = GERMANY)
[エミュレータ]
dform = NativeDecimalFormat
addr = ...
lastPattern = "#,##0.###"
結果: 1234.1 → 1.234,1
[実機]
dform = NativeDecimalFormat
addr = ...
lastPattern = "#0.######"
結果: 1234.1 → 1234.1
エミュレータでパターンが異なるのに正しく表示される理由もわかりません...
何かわかる方はご教示お願いします.
DalvikVMって末尾再帰最適化やってる? 実行時までネスト数が未知数だから再帰でやるかループでやるか悩んでるんだけど。
>>796 DalvikVMのスタックサイズはかなり小さい(8kbだったかな?)ので
再起が深いと最適化以前にスタックオーバーフローを起こすのでループが無難
バイトコードを変換する時点でそんなにいじらないと思う
ViewFlipperの使い方について質問 12個ほどLinearLayoutを子ビューに追加したのですが。 初期状態で任意のページを表示させたいと考えています・ showNext()を任意の回数実行する以外に良い方法はありますでしょうか?
androidエミュはメモリ設定できないんですかね? 普通に立ち上げたら512MBということでいいんですか?
Activity を他のアプリのコンポーネントから起動したときに新しいプロセスでインスタンスを生成するような設定はできるでしょうか? android:multiprocess="true" は呼び出し側のプロセスで Activity のインスタンスを生成しますが、User ID や署名が一致していなければならないので、制限を受けないように別プロセスで動かしたいのですが。
803 :
794 :2011/08/31(水) 12:02:47.31
>>795 「ロケール切替」というアプリを使ってロケールの切替を行っています。
端末自体が切り替えられるロケールは「日本語」「英語」のみです。
そもそも端末としてロケールを選択できない場合は、
正しく動作しないということでしょうか?
>>803 端末が持ってないロケール情報をそのソフトは全部設定してくれるのか?
そんなソフト聞いたことないね。
805 :
803 :2011/08/31(水) 12:45:32.56
>>804 その辺りはわかりませんが、表記を変えているだけで内部的な情報は正しく設定されていないのかもしれません。
エミュレータでの動作を信じて、やってみたいと思います。
ありがとうございました。
806 :
デフォルトの名無しさん :2011/08/31(水) 12:45:52.56
AndroidエミュレーターでSDCardにadbでpushしたファイルにアクセスしたいのですが、 java.io.File file = new java.io.File("sample1.pdf"); boolean exist = file.exists(); とやるとexistがfalseになってしまいます。DDMSでsample1.pdfが存在しているのは確認済み。 どなたか詳しい方、SDCard上のファイルにアクセスする際のパス指定教えてくださいm(__)m
Android developers嫁。
>>806 それだとカレントディレクトリをみてるぞ。
超初心者用スレが必要だな
カメラ使う時にautoFocusに対応してない機種用の対策がしたいのだけれど 現状のプログラムが camera.autoFocus(new Camera.AutoFocusCallback(){ 略 }); カメラ撮影 って流れになってるのだけれど、これに try { オートフォーカス } catch (Exception ex) { ; //空 } カメラ撮影 こんなのでもいいのかな(´・ω・`)… それとも事前に、checkAutoFocus見たいな関数あったりする? あるなら boolean でtrueかfalse保存しておいて、オートフォーカスを if〜elseするのだけれど…
パラーメーター設定時に params.setFocusMode見たいなのは見つけたのだけれど これは使うか使わないかの設定見たいだし、対応してるかどうかが 分かるわけではないですよね
813 :
デフォルトの名無しさん :2011/08/31(水) 16:15:38.06
806です。 807様808様レスありがとうございます。/sdcard/sample1.pdfとしたら読めているようでした。 java.io.File file = new java.io.File("/sdcard/sample2.pdf"); boolean exist = file.exists(); RandomAccessFile raf = new RandomAccessFile(file, "r"); FileChannel channel = raf.getChannel(); ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()); com.sun.pdfview.PDFFile pdfFile = new com.sun.pdfview.PDFFile(buf); 修正して上記にしたら、new com.sun.pdfview.PDFFileのところでVerifyErrorで例外が発生しました。↓Logcatのメッセージ Could not find class 'com.sun.pdfview.OutlineNode', referenced from method com.sun.pdfview.PDFFile.getOutline OutlineNodeが見つからないよってことだと思うんですが 詳しい方いたらアドバイス貰えないでしょうか。newしただけなのにもう意味がわからない・・・
workspaceでいいよ その後インポートするんだよ
できました。ありがとうございます。 自分で完全に書籍のプログラムの内容を打ち込んだと思っていましたが、実行しても画面は真っ白でした。 しかしインポートしたプログラムが正しく動いたってことは自分の打ち込みが間違っていたということですね。
>>816 そうとは限らない場合もあるので注意
・プロジェクトのコンパイラのバージョンが違う
・リソースが壊れている(F5押した後Project⇒Cleanで治る)
とか
814ですがもう一つお願いします。 一度自分で作成したプロジェクト「MapViewSample」をWclipse上で削除した後 814のURL先からMapViewSampleをダウンロードしてインポートしたのですが 「.class ファイルから間接的に参照されています。」というエラーメッセージがでます。 解決方法を教えてください。
超が付くほどの素人なのですが、恥を承知で質問させていただきたいです。 Cを扱える程度の知識なのですが、急遽androidアプリを製作することになり、 何から手をつけていいのか困っています。 やりたいことは、PC上で作製したパノラマ画像をandroid上に表示し、 自分の向いている方角と、画像の表示位置を同期させる、というものです。 自分が北を向けば、表示された画像も北を向くようにスライドさせる、というイメージです。 ↑こういったものは、どのような知識があれば可能でしょうか? 現段階では、サンプルを見て画像を表示させるのが精一杯でした。 よろしければ、勉強になるサイトや書籍、必要なメソッド(と読んでいいのでしょうか?)など、 何でも構いませんのでアドバイスをお願いします。 javaについては参考書に一通り目を通したので、概念についてはなんとなく理解したつもりです。
本屋に行ってAndroid関係の本かたっぱしから買ってこいよ
>>820 やり方は色々あると思うけど、その内容なら地磁気センサー使うのがいいんじゃないかな。
画像が表示できてるなら地磁気センサーのサンプルでも動かしてみて組み合わせればいけそう。
やったことないから想像だけど・・・。
キーワードはonSensorChangedとかで調べると出てくると思う。
824 :
デフォルトの名無しさん :2011/08/31(水) 19:04:51.11
Serviceで処理開始時などにToastを表示させたいのですが、 エミュレータでは表示されるのになぜか実機(IS03 2.2)では表示されない問題に直面しました Serviceを継承したクラスのonStart()で Toast.makeText(this, "サービス開始", Toast.LENGTH_SHORT).show(); としているのですが何か問題があるでしょうか?
>>823 ありがとうございます!
そういう具体的なキーワードが一番ありがたいです。
自分なりに調べてみます。
>>824 バックグラウンドサービスを許可している?あと自動タスクKILL系とか。
827 :
デフォルトの名無しさん :2011/08/31(水) 23:40:39.50
>>824 「設定」→「アプリケーション」→
「アプリケーションの管理」→自分のアプリ→「携帯端末に移動」
828 :
796 :2011/09/01(木) 01:01:27.45
THX!ループにした。
829 :
811 :2011/09/01(木) 09:03:33.21
831 :
811 :2011/09/01(木) 09:20:49.95
>>830 有難うございます
>>プレビューがアクティブな場合にのみ有効です(startPreview(間)とstopPreview()の前に)。
>>getFocusMode()を確認してください。カメラはオートフォーカスをサポートしていない場合、それは、コールバックがすぐに呼び出されると、ノーオペレーションとなりonAutoFocus(ブール値、カメラ)です
となっていますので、カメラ起動設定(プレビューサイズ/保存サイズ等)の時に。パラメーターにgetFocusを呼んでおけば
プログラム実行中に、autoFocusを起動するといった処理があっても
自動的にキャンセルされるということでしょうか?
エミュで出ないで実機で出る予期せぬエラーってどうすればいい? どこがエラーか特定できないお
トースト使ってどこまで動いてるか確認する。 テキストファイルとかにログ出力する。 実機でデバックする。
singleTaskと同じ挙動をさせつつstartActivityForResultを使うにはどうすればいいんでしょうか
ここで質問していいのかわかりませんがJDKがダウンロードできなくて困っています。 調べるとアカウントがなくてもダウンロードできるそうなんですが、ダウンロードのページに行こうとするとアカウント入力画面に飛ばされてしまいますどうしたらいいでしょうか
.airの拡張子のアプリをapk化したいのですがどのようにするのが良いでしょうか?
838 :
827 :2011/09/01(木) 23:57:16.53
>>832-833 Log.d(TAG,message)でlogcatでいいんじゃない?
832==824かな?
BOOT_COMPLETEDをSDカードにインストールしたアプリで受けてるとエスパーしてみたんだが、
外れたみたいだな。
839 :
833 :2011/09/02(金) 00:10:20.40
logcatって使ったことないんだけど、使いやすいもの? てか、使ってなかったらモグリだったりするのかな?
間違いなくもぐり
841 :
833 :2011/09/02(金) 00:23:25.87
俺、モグリだったのかorz
この機種はここの動作が違うから注意 というようなまとめないの?
(エミュと)動作が…です
猫なしでデバッグとかありえんわ
俺は犬派
やっぱり猫が好き
配列に画像ぶちこんだんですが 6個なら平気で7個、8個とするとエラーになりました メモリの上限とかの関係なのでしょうか?
自分用の2chブラウザを作ってみようと悪戦苦闘中なのですが、 どうにも他の2chブラウザのように素早くレス取得ができません。 自分がやっている方法は、 AsyncTaskを使ってdoInbackgroundでダウンロード、gzipを解凍、readLineで一行ずつ読み出し、 名前欄あたりの部分と、本文部分をCharSequenceなどに加工、 onProgressUpdateに渡して、TextViewに加工した名前欄と本文を入れてUIに表示 という感じでやっているのですが、何か根本的に間違ってる気もします。
>>831 getFocusMode()のところに、FOCUS_MODE_AUTOかFOCUS_MODE_MACROの場合は
autoFocus()を呼び出す必要があるって書いてある。
それ以外のモードでは、autoFocus()を呼び出したら直ぐにコールバックが呼び出されるって
ことだろ。
image1.setImageResource(img_back); これのメモリ開放ってどう書けばいいのでしょうか?
852 :
811 :2011/09/02(金) 10:19:50.39
>>850 つまり、最初にgetFocusMode()を呼び出して、モードを確認する。
その際に、if文でAUTO or MACROかどうかをチェックして、
どちらでもない場合はautoFocus()を使用しないって処理にすればおkってことですか?
setImageDrawable(null)とか
>>852 オートフォーカスを使用する前提なら、判断する必要が無い。
使わないのなら、AUTO, MACROは使用できないだな。
856 :
811 :2011/09/02(金) 10:59:21.16
>>854 オートフォーカスを使用する前提で、作ったのだけれど
(getAutoFocusは使ってない)
camera.autoFocus(new Camera.AutoFocusCallback()
↑対策しないと上呼び出す時にRuntimeExceptionエラーが発生するみたいなんだよね
try〜catchでエラー発生した時にプログラムを落とさないって処理もできそうだけど
エラー自体は発生してるから気持ち悪いしで…
使えないならAUTO/MACRO以外の値が入るわけだしif文で対応出来そうだね
thx
>>856 マニフェストに"android.hardware.camera.autofocus"がある時点で、
マーケットではオートフォーカスがない端末は対象外になってしまうのでは?
858 :
811 :2011/09/02(金) 11:11:42.22
>>857 と、思うのだけれどクラッシュレポートに
RuntimeException
場所: Camera.native_autoFocus()
ってあるので、autoFocusが原因じゃないかなと
自分の持ってる機種では、どう頑張ってもクラッシュしなかったし…
private void hoge() { ImageView image1 = new ImageView(this); image1.setImageResource(img_back[n]); 表示処理等 } やっぱりうまくいきません こういうルーチンをある条件まで繰り返してるのですが( hoge() を何度も呼び出す) nはランダムになっています。 nが1から6のときはうまくいきましたが7以上にしたとたんエラーがでるようになりました。 エラーというのはある条件になって次のアクティビティにいくタイミングで出ます。 (予期せぬエラーです) おそらくhoge()が呼ばれるたびにimage1のメモリが追加されてるような気がするんですが Java自体初なものでどう処理していいかわかりません。 ご教示願います。
860 :
デフォルトの名無しさん :2011/09/02(金) 11:19:51.17
Androidで動くPDFビューワーを作りたいのですが、 pdf-renderer-1.7.0を試してみたら、PDFv1.3と1.5は読めたけどv1.6が読めませんでした。 pdf-renderer以外のライブラリ、もしくはpdf-rendererでPDFv1.6のファイルを読む方法を ご存知の方いたら教えてもらえないでしょうか。
>>861 エミュではでなくて実機で予期せぬエラーがでるんです。
どうすればいいですか?
このスレに来る前にLogcatの使い方くらい勉強してから来てくれ
実機でデバッグしろよ・・・
トライキャッチすれば、予期せぬエラーで落ちなくなると思うよ。 ん?そういうことじゃない?
>>849 tuboroidon?だっけ確かソースを公開してたと思うよ
探して中見てみたらいいのでは
エラー内容でました。 Low Memory: No more background process. です。
869 :
796 :2011/09/02(金) 13:27:53.59
>>849 AsyncTaskはUIスレッドでやるから当然遅い。
>>869 doInbackgroundも遅いんけ?
>>858 クラッシュレポートに機種の情報とかないからな…
HTC Heroでそんな現象が出るみたいだな。
>>849 表示に関わる箇所はそのタイミングでやるべきじゃない。
873 :
デフォルトの名無しさん :2011/09/02(金) 16:35:32.52
大きな画像を表示するとき、参考書などのサンプルだと画面に収まるように縮小されて表示されますよね。 例えば横長画像の縦幅を画面サイズの縦幅最大になるようにリサイズすることって可能ですか? 横は画面からはみ出るイメージです。
Viewを定義し終わって表示した状態で、 後から背景を変更したら1dipほどズレてしまいます。 原因を調査したいのですが動的にViewのステータスを確認する方法ってあります?
ある Activity のサブクラスの onCreate(Bundle) の中で、そのクラスのインタンス (メモリ不足なので消去されたものも含む) の数を知るにはどうすればよいでしょうか?
879 :
875 :2011/09/02(金) 17:32:44.08
自己解決しました。 ズレは直せてないけど;
881 :
875 :2011/09/02(金) 17:49:53.04
>>880 たぶん、ですが。
[ビルドしたアプリケーションのインストール]以降の手順を無視していませんか?
APIレベルが合ってなくてインストールに失敗しているとか とりあえず、どうにかしてエミュレータにapkをコピーして手動でインストールしてみる
>>881 >>882 素早いお返事ありがとうございます(お礼がまとめてですみません)。
・eclipseのWorkspaceフォルダの古いプロジェクトのフォルダを全て削除
・AVDを作り直す(以前のAVDと同じ設定で)
ということをするとなぜかうまくいきました。
>>870 doInBackground()だけワーカー。だからそれ以外に時間かけると遅い。
スレッド使って粒度の細かくしたUI更新だけUIスレッドにポストするのが一番早い。
ndkのコードをeclipse上でデバッグしてるんですが、ステップ実行するのに毎度毎度5秒ぐらいかかるんですがそんなもの?
初歩的な質問ですみません。 あるActivity内に複数のEditTextがあって、フォーカスがあたってるEditTextを取得したいのですが、どうやればいいのでしょうか?
>>874 >>876 >>877 すいませんでした、もう少し詳しく書きます・・・。
初歩的なところから、画像が画面サイズより大きかったときに、
リサイズせずにそのままのサイズで、画面からはみ出しつつ表示する方法が知りたいです。
main.xmlのImageViewから指定しようと試みているのですが、どうしても自動的にリサイズされてしまい困っています。
なにか良いコマンドはないでしょうか?
それともmain.xmlのImageViewからしようというのが無理なのでしょうか?
だとすれば、他になにか方法があれば教えていただけると嬉しいです。
よろしくお願いします。
890 :
887 :2011/09/02(金) 19:23:14.61
自己解決しました。すみません。
>>887 どう解決したかぐらい書けや
getCurrentFocus()
>>878 WeakReferenceとかは別として
誰かが参照しているものはGCでも回収されないし、
参照していないものはその後参照するようにする手段も無い
doInbackground以外のメソッドはUIスレッドじゃなくて、
呼び出し元のスレッドで実行だぞ
それにUIスレッドで処理したからって遅くはならん
>>849 今の処理だと全レス分TextViewなどを生成してしまうから多分遅い
ListViewを使うなどして、画面に表示されない部分はViewも作らないようにするべき
>>894 AsyncTaskはUIスレッドでnewしなきゃいけないしexecuteもUIスレッドで呼ばなきゃいけないからdoInbackground以外はUIスレッドで呼ばれるんだよ。
それと、UIスレッドで実行するとキューに入れるから遅いに決まってるだろ。すぐに実行されるわけじゃない。
896 :
887 :2011/09/02(金) 20:38:33.65
>>891 自分もgetCurrentFocus()で取得しました。あざーす。
bionic のスレッドの安全性についての記述が見当たりませんが、スレッド安全ではないと考えてよいでしょうか?
ViewFlipperのパフォーマンスの改善について質問です。 大きな画像をViewFlipperでフリップさせたときや、複数のViewを配置したレイアウトをViewFlipperでフリップさせたとき 動作がカクついてしまうのですが、なめらかに表示する方法は無いでしょうか。
CPUもヒープも貧弱だからそういうもんだよ。 強いて言うなら組み込みでUIにアニメ付けるのが間違い。
900 :
888 :2011/09/03(土) 00:38:47.67
>>892 ScrollViewを使ってリサイズせずに画像を表示することに成功しました!
ありがとうございました!
次はこのスクロールバーを、方角に合わせて自動的に動かしてやろうと考えています。
ScrollViewのバーを移動させるコマンドがあれば、是非教えていただきたいです。
何度もすいません、よろしくおねがいします。
>>849 の処理はAsyncTask使おうが全部UIスレッドでやろうが時間はほとんど変わらんだろ
UIスレッドで処理してるから重いなんてのは理由にならん
setImageBitmapで設定する画像はjpgやpngでもいいのでしょうか?
はい
なんでやってみりゃすぐわかることを質問するんだ?
エラーでたんすけど だめじゃん
やっぱできますた
アホの一つ覚えで聞けば何でも出て来ると思ってるんだろ。
>>904 で終了してるんだからスルーしようぜ
引っ張るほどのネタか?w
リソースの解放ってどう書けばいいのでしょうか?
リリースした時点で解放されているのでは
リストビューでスペース見つかると自動で改行されるけど、 みたいにスペース扱いされずに改行されない方法ってある?
あっ &nbsp;ってかいたら変換されてしまった、、、
昨日質問したメモリーリークの問題ですが どうやらOS1.6にでるようでそれ以上はでないようです。 1.6では適切にGCしてくない模様。 つーことで1.6を切り捨てます。
質問です。 HTTPデータ取得の中断を行いたいのですが、どうしたらできるでしょうか? いろいろとやってみましたが、接続タイムアウトまで待たされます。 ・UrlConnectionのconnectを別スレッドからclose→反応せず ・AndroidHttpClientのexecuteを別スレッドからclose→反応せず ・AndroidHttpClientのexecuteを別スレッドからHttpUriRequest.close→反応せず ・AndroidHttpClientのexecuteを別スレッドからClientConnectionManager.shutdown→反応せず
918 :
デフォルトの名無しさん :2011/09/03(土) 16:36:05.30
Honeycombのメニューアイコン、SDKに含まれてるギャラリーアプリだとhdpiは48x48なんだけど 48x48のアイコン作って android:icon="@drawable/ic_menu_oppai" みたいに指定すると巨大おっぱいが表示されちゃうんだけど正しい表示方法わかる?
おっぱいは大きいほうがいいじゃないか
921 :
916 :2011/09/03(土) 16:45:23.40
>>917 HttpGet.abortは一瞬で制御を返すのですが、
AndroidHttpClient.executeがなかなか終わらないのです。
はようp
ループの中で同じ変数で新しくインスタンスを作ると メモリがどんどん食われる仕組みなのでしょうか? stringとstringbufferの違いみたいなかんじというとわかりやすいでしょか。
>>924 >メモリがどんどん食われる
もちろん。ただし当然ガベージコレクションが働く
>stringとstringbufferの違いみたいなかんじというとわかりやすいでしょか。
全然わからない
×そのままだと思うのですが。 ○そのままだと思ってしまうのですが。
理解した。immutable/mutableの話だな。
931 :
859 :2011/09/03(土) 19:05:08.93
>>859 読んだだけじゃよくわからないけど
ほんとうにくだらないミスをしてつまづいてるような気がしてならない
もっと周辺のソース貼ってみたら?
>食われないようにするにはどうすればいいでしょうか? Javaを使わなければ良い。
934 :
デフォルトの名無しさん :2011/09/03(土) 20:01:54.62
動画ファイルにDRMのようなことやりたいんだけど
>>927 とりあえず毎回ImageViewを新しく生成するのをやめろ。
ImageView作ってるってことは、表示処理って書いてるところで どっかのビューにはっつけてるんだろうけど もしそうならいつまでたってもGC発生しないでメモリリークするよな
android:persistentをtrueにしてしまえば、アプリが隠れようと、 onPauseにはならなくなるのかな?つまり、onCreateに戻ることがなくなる… ウェヒヒヒ
いや、getLastNonConfigurationInstanceを使うべきか
よく調べたら簡単にできました。皆さんすいませんでした
実際、applicationのandroid:persistentをtrueにしてる豪快なアプリってあるのかな?
1.6で互換性がーとか言う奴、ほとんどの場合 ドキュメント読まずに作って特定バージョンでたまたま動いてるだけ ってパターンだからなぁ
まあでも互換性に問題がある部分は明文化されてない事が多いけどね。
わからない時こそ、試してみれば良い。 無様な姿をさらさなければ身につかぬ事もある。 人は倒れきって初めて立ち上がれる。
>>934 完成したらオープンソースで公開してくれ
乞食うぜえ
>>943 しかし、異常系で非互換問題はいくつかは知ってるけど、正常系だとほんと数えるほどしかないんだよなぁ
例えば Xperia arc のフォント読み込み問題なんかは正常系の非互換なのでまずい
とはいえ、公開APIの範囲で作ってたらそうそう踏まないし、上記フォント問題は有名だからググればすぐに出てくる
「非互換」を起こすありがちな事例としては
・multi-screen supportの扱いがおかしい。もしくはそもそもやっていない。ドキュメント嫁
・Activityの管理がおかしいために不規則な挙動になる。ドキュメント嫁
・デフォルト値無保証のAPIをデフォルト値で使ってる。オプション設定しろ。ドキュメント嫁
・カメラ・3Dなどで特定ハードを決め打ったコードを書いている。ドキュメント嫁
・隠しAPIを使ってる。使うな。日本語嫁
あたりで98%該当すると思われ
>>941 DeviceAdminじゃないのにアンインストールできないアプリがあって
気になって調べたらそれが設定してあるせいだった
NDK GDBを使おうと思ったのですが、ndk-gdbを実行すると以下のようなエラーが出てうまくいきません。 awk: fatal: can't open source file `/cygdrive/d/prog/NDKnatest/C:/android-ndk-r6 /build/awk/check-awk.awk' for reading (No such file or directory) ERROR: Could not run 'awk' command. Do you have it installed properly? d:/prog/NDKnatestがプロジェクトのパスです。これは何が原因なのでしょうか。 C:/android-ndk-r6/build/awk/check-awk.awkはちゃんと存在しています。
ERROR: Could not run 'awk' command. Do you have it installed properly? って書いてあるだろ。 check-awk.awkスクリプトはあるけどawkコマンドが入ってないんじゃないの? あるいはpathが通ってないとかドライブの指定がおかしいとか(D:ドライブのC:/xxxという ディレクトリ見てるみたいに見える)
画面が暗くなってもactivityをbackgroundにしないためにはどうしたらいいですかね?
画面を暗くしなければいんじゃね
暗くなっても生き残るようにしてるアプリが結構あるし
backgroundにならないってのがonPauseにならないって意味ならとても下品なことをしないと無理
>>950 awk単体では実行できるのでawkコマンドとパスは大丈夫だと思います
ドライブの指定というのがよくわからないのですが具体的にはどの部分を確認・修正すればいいのでしょうか
>>954 やっぱりそうなんですかね…backgroundに行かないように
必死にぐるぐる回すみたいなことをするんですかね
でもそれを実装しないと苦情が来まくるし…
先にいっとくけど、Activityの状態遷移を無視/破壊した場合の動作は未定義だからな 仕様未定義の処理してOSがバグってるだの互換性が〜だの寝言言うなよ 必ず割り込めないといけない「着信」が存在する以上、 電話機でonPauseを回避するなんて考えがそもそもナンセンスってのを理解しろ 分かったら黙ってonPauseで状態保存/onResumeで状態復帰の処理を書いとけ
そのナンセンスをやってるアプリがmarketで人気なわけで
>>958 onPauseの回避なんて出来ないって
>>959 出来なくはないよ
何が起こってもおかしくない状態に陥るだけで
onPauseを継承しなかったら呼ばれない
SuperNotCalledException
最前面にあるアプリの切り替ってフレームワーク内でやってて、 そこからonPauseも呼ばれてるのに、その動作を変えることできるの?
onPauseは別にいいんだよ。onCreateには戻らないから onStopにならないようにしたい
>>964 onStopもonCreateには戻らないけど…?
メモリ不足で死んでるんだったら別問題だぞ
電話アプリがまっ先にとばっちり受けるだけじゃね?
基本的にアプリが終了するとメモリは解放されるんだよね?
基本を無視した無茶なことを考えてる奴は 基本が理解できてないように思うお
ホーム自体がアプリなんだよね? IS01使ってるとランチャーが終了しましたとかよくでるからさ。 これメモリ不足で落ちるんだなって最近わかった。
>>963 リフレクション使ってフレームワークぶっ壊せば不可能ではないだろう
巷ではそういう状態を「暴走している」と呼ぶけどな
>>955 awk: fatal: can't open source file `/cygdrive/d/prog/NDKnatest/C:/android-ndk-r6
/build/awk/check-awk.awk' for reading (No such file or directory)
/cygdrive/d/prog/NDKnatest/C:/android-ndk-r6/build/awk/check-awk.awk
ってなってるけど。このパスおかしくない?
プロジェクトがD:ドライブで、check-awk.awkがC:ドライブにあるんだよね?
NDKとプロジェクトを同じドライブにしないといけないかも。
>>971 携帯の場合はホームというランチャーがOSに組み込まれてる。(マルチタスクだとスイッチャの機能も持ってたりする)
普通は当然そんなものはないのでそれに似せたランチャーをつくるしかないという事。
それで、こういう情報端末のOSってのはソフトを終了させるという動作はないのでメモリが足らなくなったらOSが勝手にKillする。
現にアクティビティを明示的に安全にプログラムから終了処理する方法は提供されてない。
>>972 ActivityManagerServiceなんかは別プロセスで動作してるから
リフレクション使ったところでどうにもできんし、それを暴走してるとも言わん
リフレクション覚えたてのころ、何でも出来るって勘違いするよね
ハートはもう気ままにReflection
>>975 ActivityManagerってActivityのperformPauseとかが破壊されたら面倒見てくれなくない?
>>978 その破壊の仕方を教えてくれ
大体performPauseの動作を変えたところで
onPauseが呼ばれないだけで画面は裏に行くぞ
すいません。Threadについて教えてください。 現状は ボタン押下→処理が無かったら処理1開始 ボタン2押下→処理が無かったら処理2開始 処理が終わらないと次の処理開始が始まらないです。 だけどイベントは受け取っているようで、処理がキュー されてる感じです。 下に続く
981 :
980 :2011/09/04(日) 16:54:04.12
期待する動作はキューではなく、 ボタン押下→処理1開始。 ボタン2押下→処理2開始。 処理1が終わっていなくても処理2が終わっていなくても UI操作で他の処理を開始させたいです。 イメージ的にはUIスレッドと他のスレッドを高速スイッチング させたいイメージでしょうか。 そもそも出来ないようなことをやろうとしてますか? できそうならヒントをいただけると幸いです。 よろしくお願い致します。
なにがどううまくいかないのかさっぱりだけど、書いてる通りに、処理を別スレッドで実行すればいいのでは?
>ボタン押下→処理1開始 これは処理1を別スレッドにしないと処理1が終わるまでボタン押下の 処理が終わらないんだから当然じゃね。 なんかさせたいならボタン押下はスレッド起動だけとかにして すぐ戻らんと。
ちなみにイベント処理はすべてメインスレッドで順次実行だったと思うから ボタン押下処理が制御を返さないと次のボタン押下処理は処理されないよ。
edittextで高さ調節すると、カーソルが一番上の行じゃなくって真ん中の行で表示されるんだけど、どうすれば一番上の行に持ってこれるかな? ちなみにXMLはこれ <EditText android:text="" android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/detailTextView" android:height="150dp" android:maxLines="6"></EditText>
>>973 Cドライブに揃えても同様のエラーで起動できませんでした…
アプリからメール本文(@ezwebとかの)を消去するのってできんのかな? コンテンツプロバイダとか探ってみたけど、公開されてないのか よーわからん。
>>987 アプリックスのメーラの話なら無理
ツールあるけどエクスポートしてから処理してるでしょ
シャープ製はしらん
>>985 maxLinesだと最大6行で初期は1行になるから高さがセンタリングされるんだった気がする。
6行で固定なら最初からLines?とかで指定しておいたら一番上から表示されたような。
もっといい方法があるかもしれないけど、参考までに。
>>988 ぬをー、やはり無理でしたか
ありがとう
>>985 gravityでテキストの位置を指定できる
993 :
980 :2011/09/04(日) 22:32:57.29
リストビューのアイテムの一部にTextViewを貼り付けてるんだけど クリックに反応しないようにする方法あったら教えてください
PCのwebで拾った *.apk ファイルを実機の data/app/ に手作業で放り込んでやったらインスコもせずに動きました。 それで自作の *.apk(署名済み) を同じく data/app/ に入れたんですがアプリと認識されませんでした。 この違いはなんですか? またこのインスコ不要.apkはどうやったら作れますか?
Androidにインストール動作なんてあったっけ?ダウンロードして配備するだけじゃないの? MIDPならダウンロード後に明確なインスコやってるが。
997 :
900 :2011/09/05(月) 01:58:11.45
>>902 すみません、検索が足りませんでした・・・。
現在はHorizontalScrollViewを用いて、横長画像一枚を表示しています。
調べたところ、どうやらscrollToで画面をスクロールできそうだという結論に至り、
HorizontalScrollView hsv = new HorizontalScrollView(this);
hsv.scrollTo(100.0);
という風に記述してみましたが、エラーは無いのですが動作しませんでした。
android.widget.HorizontalScrollViewはインポートしています。
記述方法が間違っているのでしょうか?
>>997 やあ、僕はスティーブ・ジョブズ(Steven Paul Jobs)だよ、ジョブズと呼んでくれ
ちなみに、ウォズことスティーブ・ウォズニアックは
ステファン・ゲーリー・ウォズニアック(Stephen Gary Wozniak)なのさ
さっそくだが、その曖昧模糊な質問から様々な要素を勘案、推測した上で答えられる事は以下のとおりだよ
動的生成したhsvではなく、main.xmlに追加したHorizontalScrollViewを操作しなさい
>>997 作ったら一度イベント抜けないと動かない
1000だったら……
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。