Androidプログラミング質問スレ Part23
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/06/19(火) 19:57:12.12※プログラミング自体が初めて!なあなたには↓↓↓こちらへ
スレ立てるまでもない質問はここで 118匹目
http://toro.2ch.net/test/read.cgi/tech/1331904826/
Eclipse統合M32【Java/C++/Ruby/Python/Perl】
http://toro.2ch.net/test/read.cgi/tech/1320318310/
★★Java質問・相談スレッド153★★
http://toro.2ch.net/test/read.cgi/tech/1334438859/
****関連リンク****
■ Android developers http://developer.android.com/
■ ソフトウェア技術ドキュメントを勝手に翻訳 http://www.techdoctranslator.com/
****前スレ****
Androidプログラミング質問スレ Part22
http://toro.2ch.net/test/read.cgi/tech/1337170429/
0191デフォルトの名無しさん
2012/06/27(水) 01:31:59.60エラー出ても普段追えないソース追えたりするのかなと
デバッグ実行以前にコンパイルも無理そうな予感がするから見るだけになるけど
なんでエラー発生してるの?っていう場面が多くて堪らない
作法を知らないだけなんだけどさ
0192デフォルトの名無しさん
2012/06/27(水) 01:43:28.43>実機の設定は、「デバッグ」と「提供元不明のアプリ」はONにしてあります。
>ADBインターフェースドライバというのは、186さんへのレスで書いた「Android Composite ADB Interface」でいいのでしょうか?
そう、それそれ。あってます。
じゃあ何が問題なんでしょうな…
adb kill-server
adb start-server
を試してみるとかどうでしょう。
たまにこれで見えないデバイスが見えるようになるんだけど。
あと、最近はdebuggableって無視されるんじゃなかったっけ?
俺そんなの書いたことない。
0193デフォルトの名無しさん
2012/06/27(水) 01:49:42.45最近はSDKダウンロード時にソースも一緒に落とせるようになってるんだぜ。
但し完璧に全部ではないっぽい。
多分、ネイティブ側のソースはこれでは手に入らない。
昔はgitとか言うの使ってごりごり全部落としたんだが、
pythonのバージョンが違うとか何とか色々はまって泣きそうになってた。
あと落ちてきたソースのサイズが思いのほかでかくて泣きそうになってた。
今でも全ソースが欲しければコレやるしかないけど、
ネット上で日本語の情報を探しても、殆ど内容が陳腐化してしまっていて、
あんまり役に立たなかった気がする。
とりあえず気合と根性とcygwinがあればなんとかなる。がんがれ。
そしてやり方分かったらここに手順を報告していただけると助かりますw
0194デフォルトの名無しさん
2012/06/27(水) 01:56:09.99http://grepcode.com/
以前はOESFのgithub見てたなぁ
https://github.com/OESF
0195デフォルトの名無しさん
2012/06/27(水) 02:02:05.400196デフォルトの名無しさん
2012/06/27(水) 02:07:16.37ネイティブ側のソースが読めなかったのがそんなに悔しかったのか
0197155
2012/06/27(水) 02:08:54.58kill-server、start-server を実行し、改めて devices してもダメでした。
実機を接続しての実行はLogCatを確認するための手段でしたので、189さんに教えて頂いたCatLogをインストールして実機でLogCatを確認することにしてみます。
せっかく教えて頂いたのに結果を出せずにすみません、ありがとうございます。
0198デフォルトの名無しさん
2012/06/27(水) 02:25:04.33かなり勉強になる
0199デフォルトの名無しさん
2012/06/27(水) 03:50:33.12Eclipse使ってるときはdebuggable=trueしなくていい、って書いてた。
すまん。
>>191
前はrepoで取ってきてたけど、今は下記のサイトを使ってる。
https://sites.google.com/site/devcollaboration/codesearch
1.6とか、古いバージョンのソースを見るときは、GrepCode使ってる。
0200デフォルトの名無しさん
2012/06/27(水) 04:48:04.70https://android.googlesource.com/
0201デフォルトの名無しさん
2012/06/27(水) 09:05:02.82intent.setType("text/plain");
だと関係ないアプリが表示される
0202デフォルトの名無しさん
2012/06/27(水) 09:13:18.54自力でツウィッタークライアントのパッケージ名一覧を作るしか
0203デフォルトの名無しさん
2012/06/27(水) 09:38:48.95BRAWSABLEで、hostを"www.twitter.com"とするフィルターでイケるんじゃね?
手元にあったPlumeとTwitcleは両方ともこのフィルター持ってた。他は知らんw
0204デフォルトの名無しさん
2012/06/27(水) 09:39:41.170205デフォルトの名無しさん
2012/06/27(水) 09:47:20.80EditTextを気合で並べるか、グラフィック(?)で描画するくらいしか方法はないですか?
CodeZineのDBGridを使ってみたけど列と行が大量にあるとだめぽお・・・
0206デフォルトの名無しさん
2012/06/27(水) 09:50:19.250207デフォルトの名無しさん
2012/06/27(水) 09:56:35.62再利用する方法を使います。
ありがとうございます。
0208201
2012/06/27(水) 11:08:24.11ありがとう御座います。
参考になれば使ってください。
try {
Tweet = "https://twitter.com/intent/tweet?text="
+ URLEncoder.encode(Title, "UTF-8")
+ "+"
+ URLEncoder.encode(HashTag, "UTF-8")
+ "&url="
+ URLEncoder.encode(mUrl, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Intent intenttw = new Intent(Intent.ACTION_VIEW, Uri.parse(Tweet));
startActivity(intenttw);
0209デフォルトの名無しさん
2012/06/27(水) 14:01:41.54http://www.dotup.org/uploda/www.dotup.org3136556.png
0210デフォルトの名無しさん
2012/06/27(水) 14:16:52.060211デフォルトの名無しさん
2012/06/27(水) 15:54:33.58以前の2.x系のWebViewではリンククリック時にリンクがハイライト表示されたのですが、
同じアプリでも4系ではハイライト表示されないようです。
なにか必要な処理が変わったんでしょうか?教えてください。
0212デフォルトの名無しさん
2012/06/27(水) 17:19:40.40【社会】 日本人女性2人、リゾート地・セブ島で知り合った韓国人の男2人と飲酒→集団強姦される…フィリピン★8
http://uni.2ch.net/test/read.cgi/newsplus/1340777581/
【社会】セブ島で、韓国人男性2人が日本人女性を集団強姦→ネットで韓国人 「日本は昔、同じことをやった」★2
http://uni.2ch.net/test/read.cgi/newsplus/1340777561/
0213デフォルトの名無しさん
2012/06/27(水) 21:01:28.91Intentのこと?
0214デフォルトの名無しさん
2012/06/27(水) 23:09:28.240215デフォルトの名無しさん
2012/06/27(水) 23:18:00.650216デフォルトの名無しさん
2012/06/28(木) 00:16:42.10楕円にこういうグラデーション掛けるのどうすればいい?
RadialGradientは円なら描けるけど
円で描画してから変形するんじゃなくて直接的に楕円で描く方法ってある?
0217デフォルトの名無しさん
2012/06/28(木) 00:21:26.390218デフォルトの名無しさん
2012/06/28(木) 01:16:24.070219デフォルトの名無しさん
2012/06/28(木) 09:19:31.36これを出ないようにするか、これのコピーを検知する方法はないでしょうか。
0220デフォルトの名無しさん
2012/06/28(木) 17:25:28.91startActionModeをオーバーライドしてnullを返せば抑止できた気がする
0221デフォルトの名無しさん
2012/06/28(木) 21:04:28.89本当はアプリ自体を終了させたいのですが。。
ちなみにActivityBで動いている処理は、onPause()のタイミングで全て止めています
0222デフォルトの名無しさん
2012/06/28(木) 21:09:28.59ActivityBでfinish()してないからじゃね
0224デフォルトの名無しさん
2012/06/28(木) 21:13:21.52http.connect();
InputStream in = http.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
StringBuilder builder = new StringBuilder();
char[] buf = new char[1024];
int numRead;
while (int i = 0;i < 50;i++) {
builder.append(buf, 0, numRead);
}
reader.close();
in.close();
http.disconnect();
こんな感じに普通に途中で切ってしまっても大丈夫なんでしょうか?
0226デフォルトの名無しさん
2012/06/28(木) 22:09:30.930227デフォルトの名無しさん
2012/06/28(木) 22:10:49.900228デフォルトの名無しさん
2012/06/28(木) 23:25:12.990229デフォルトの名無しさん
2012/06/29(金) 00:16:35.15webviewのスクロールに合わせてタイトルバーもスクロール(下にスクロールすると隠れる)するのはどう実現しているのでしょうか?
LinearLayOutでタイトル+webview+メニューで順番に配置した場合
タイトルバーはwebviewのスクロールに合わせて移動してくれません・・・
0230デフォルトの名無しさん
2012/06/29(金) 08:29:23.93わざわざ、指摘してるのに
「それはちゃんとやってますから」とか自慢げにいうやつってなんなんだろうね。
「ちゃんと作ったのに動きません」とかさ。
いや、ちゃんと作ってないから動いてないんだよ。
プログラムは作った通りにしか動かない
これ分かってない奴多すぎだろ
(あぁ、コンパイラのバグとかは除いてw)
0231デフォルトの名無しさん
2012/06/29(金) 08:48:37.51RelativeLayoutで重ねて置けばおk
0232デフォルトの名無しさん
2012/06/29(金) 14:56:02.27従来のメニュー・処理を常に押せるように表示しておけってことですよね。
ぶっちゃけこれってアイフォンのパクリってことでいいんでしょうか。
であれば、アイフォンと同じように機能を持たせようかと思うのですが。
0233デフォルトの名無しさん
2012/06/29(金) 16:10:15.910234デフォルトの名無しさん
2012/06/29(金) 16:58:13.71いいと思ったら容赦なくパクれ
0235デフォルトの名無しさん
2012/06/29(金) 17:44:27.280236デフォルトの名無しさん
2012/06/29(金) 18:12:37.86オーバースクロールは問題になったから知ってるんだが他のUI面で特許あるん?
0237デフォルトの名無しさん
2012/06/29(金) 23:58:07.280238デフォルトの名無しさん
2012/06/30(土) 00:08:16.120239デフォルトの名無しさん
2012/06/30(土) 00:22:53.43たびに再課金することってできますか?
0240デフォルトの名無しさん
2012/06/30(土) 02:25:53.010241デフォルトの名無しさん
2012/06/30(土) 12:28:52.230242デフォルトの名無しさん
2012/06/30(土) 12:30:04.490243デフォルトの名無しさん
2012/06/30(土) 12:35:47.740244デフォルトの名無しさん
2012/06/30(土) 12:54:00.240245デフォルトの名無しさん
2012/06/30(土) 13:10:41.590246デフォルトの名無しさん
2012/06/30(土) 13:12:01.47美味くコードがかけません。ググりまくっても中々同じ様なsampleが無いので、
どうかお知恵を貸してください。
※久しぶりの2chだったので改行忘れてましたすまそん。
0247デフォルトの名無しさん
2012/06/30(土) 13:18:50.04でAppWidgetProviderでレシーブしてアップデート
0248デフォルトの名無しさん
2012/06/30(土) 13:36:18.28なるほロケット。やってみます。
0249デフォルトの名無しさん
2012/06/30(土) 17:42:05.18PCがフリーズしてしまうのですが、
回避方法とかありませんか?
実機:xperia
PC:dell(i3)/win7
0250246
2012/06/30(土) 18:34:27.04ログから取ってみようと思ったんですけど、それさえ取れません。
サービス側
Intent intent = new Intent(アクション名);
intent.putExtra("KEY", TITLE_NAME);
sendBroadcast(intent);
AppWidgetProvider側
onReceiver(Context context,Intent intent){
if (intent.getAction().equals(アクション名)){
Log.v(TAG,"onReceive");
}
}
}
0251246
2012/06/30(土) 19:15:46.89Service側
Intent intent = new Intent(Service名.this,AppWidgetProvider名.class);
intent.putExtra("KEY", TITLE_NAME);
sendBroadcast(intent);
Widget側
public void onReceive(Context context,Intent intent) {
Log.v(TAG,"onReceive");
Bundle bundle=intent.getExtras();
String text=bundle.getString("KEY");
Log.v(TAG,text);
0252デフォルトの名無しさん
2012/06/30(土) 19:32:26.790253246
2012/06/30(土) 20:09:56.16251の方法でログ通過してくれました。onReceiveからも無事Updateして
曲名が自動更新出来る様になりました。ありがとうございます。
>>252
アクション以外はマニフェストへのintent-filter追加ってしなくても良いはずじゃ?
とりあえず現時点では追加しなくても動作するようです。
0254デフォルトの名無しさん
2012/06/30(土) 21:30:25.010255デフォルトの名無しさん
2012/06/30(土) 21:31:52.890256デフォルトの名無しさん
2012/06/30(土) 22:47:46.58何で最初から全部の権限が許可されていないのかな…
0257デフォルトの名無しさん
2012/06/30(土) 23:02:54.01それじゃ権限の意味ないだろ
0258デフォルトの名無しさん
2012/06/30(土) 23:42:29.77ユーザーじゃなくて、
アプリの作者が権限を付加するくらいなら
なくても良いのに、ってこと。
0259デフォルトの名無しさん
2012/06/30(土) 23:47:24.54開発者側としてはないと困るしょ
0260デフォルトの名無しさん
2012/07/01(日) 00:39:38.06開発者からすれば余計なことをしていないという証明になる。
権限があって困るのはマルウェアを作ろうとしている人だけ。
0261デフォルトの名無しさん
2012/07/01(日) 00:43:35.55結局見ないなら全許可でもいいよねPCみたく
0262デフォルトの名無しさん
2012/07/01(日) 00:46:35.410263デフォルトの名無しさん
2012/07/01(日) 01:02:39.97わかる人は騒がず、わからない人だけが騒ぐからそう見えるだけ。
権限を気にせず開発がしたいならiPhoneでいいじゃん
0264デフォルトの名無しさん
2012/07/01(日) 02:22:10.070265デフォルトの名無しさん
2012/07/01(日) 02:25:05.640266デフォルトの名無しさん
2012/07/01(日) 04:35:56.550267デフォルトの名無しさん
2012/07/01(日) 10:22:02.04どうしたらいいでしょうか?
0268デフォルトの名無しさん
2012/07/01(日) 11:31:36.540269デフォルトの名無しさん
2012/07/01(日) 11:36:14.70アプリをアンインストールすればいいんじゃね
0270デフォルトの名無しさん
2012/07/01(日) 11:40:47.460271デフォルトの名無しさん
2012/07/01(日) 14:17:51.810272デフォルトの名無しさん
2012/07/01(日) 15:30:54.97ここのレベルの高さが世界に知れ渡っているんだよんなわけない
0273246
2012/07/01(日) 17:50:37.41現在、リストアイテム選択でIDを拾いつつ、サービスを起動してsetDataSource経由で曲を再生しています。
昨日、Widgetを追加したのでonStart後の処理は丁度以下の様になっていて、
曲を選択した後、曲が更新された場合、問題なく動作しています。
サービス側
@Override
public void onStart(Intent intent, int StartId) {
Widget関連処理ソメッド
if( ! Widgetのプレイボタンクリック){
setOnCompletionListener(ここで曲情報をWidgetへブロードキャスト)
setDataSource
}
}
0274246
2012/07/01(日) 17:51:56.39それらが使える様になるのは前途の通り、曲を選択した後か曲が切り替わったタイミングのみです。
これをWidgetを追加した後、ボタンが有効になる様に、或は曲が再生されているのであれば、
文字情報を予め表示させるようにしたいのですが、何か良い手は無いでしょうか?
省略しているところもありますが、以下がWidgetProviderでの処理内容となっています。
@Override
public void onReceive(Context context,Intent intent) {
Bundle bundle=intent.getExtras();
AppWidgetManager manager = AppWidgetManager.getInstance(context);
RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.widget);
if(bundle != null){
String title=bundle.getString("曲情報");
}
view.setTextViewText(R.id.text_title,title);
ComponentName widget = new ComponentName(context, Widgetクラス名.class);
manager.updateAppWidget(widget, view);
}
0275デフォルトの名無しさん
2012/07/01(日) 18:37:16.510276246
2012/07/01(日) 18:50:11.71クリックイベントは全てServiceに登録してます。
Widgetクラスはレシーバーと、onUpdateのサービス起動だけです。
0277246
2012/07/01(日) 18:55:46.28こんな感じになってます。
サービス側
@Override
public void onStart(Intent intent, int StartId) {
AppWidgetManager manager = AppWidgetManager.getInstance(this);
RemoteViews view = new RemoteViews(this.getPackageName(), R.layout.widget);
if (PLAY_CLICK.equals(intent.getAction())) {
mp.start(); or mp.pause();
}
Intent play = new Intent();
play.setAction(PLAY_CLICK);
PendingIntent playPending = PendingIntent.getService(this, 0, play, 0);
view.setOnClickPendingIntent(R.id.button_play, playPending);
ComponentName widget = new ComponentName(this, MusicWidget.class);
manager.updateAppWidget(widget, view);
if (!PLAY_CLICK.equals(intent.getAction())) {
再生処理メソッド
}
}
0278デフォルトの名無しさん
2012/07/01(日) 19:13:52.12この処理がおかしいのでは
クリックがきかないってことはこれがトルーになってるってことじゃね
0279246
2012/07/01(日) 19:35:12.66今ですね。凄い事発見してしまったんですが、
通常、Widgetを画面に追加するとonUpdate呼ばれますよね?
ここのログが出て来ないので、startService()呼べてないのが原因じゃないかと。
ただ、その線も捨てられないのでログとってみます。
0280246
2012/07/01(日) 21:20:10.88onReceiveの処理をメソッドごと削除するとonUpdateが呼ばれる様になり、
ボタンが有効になりました。その代償として曲やアルバムアートなどが表示されなくなりましたけど。
onReceiveがあるとonUpdateが呼ばれないなんてことありませんよね?
もう少し色々やってみます。
0281デフォルトの名無しさん
2012/07/01(日) 21:36:24.04継承クラスのonReceive内で super.onReceive(context, intent); を呼ぶか
自前で処理しないとonUpdateは呼ばれないよ。AppWidgetProviderのソース見てみ。
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r1.2/android/appwidget/AppWidgetProvider.java#AppWidgetProvider.onReceive%28android.content.Context%2Candroid.content.Intent%29
onReceiveでintentのactionを判定してそれぞれonUpdate、onDeleted、onEnabled、onDisabled処理呼ぶという
単純なことやってるだけだから。
毎回継承元ソース見てsuper呼ぶべきかどうか見てるんだけど
皆さんはどうしてるんだろう
0282246
2012/07/01(日) 22:32:48.30つまりAppWidgetProvider内はonUpdateのみにして、
ブロードキャストレシーバーを継承した独自クラスを作り、
その中でonReceiveをすれば良いと言うことでしょうか?
プログラム歴6ヶ月のおっさんには何だかハードルあ高いなぁw
0283デフォルトの名無しさん
2012/07/01(日) 22:46:37.25(new Thread(new Runnable() {
@Override
public void run() {
//処理
}
}.start();
っていうのがよく載ってるけど
new Runnable()ってなくても動くんだけど
なんのためにあるんでしょう?
0284デフォルトの名無しさん
2012/07/01(日) 22:47:41.49あーちがう、
>>280の「onReceiveの処理をメソッドごと削除する」前の段階のソースで
onReceiveの冒頭にsuper.onReceive(context, intent);入れるだけで意図通り動くと思うよ。
ちょっと回りくどかった
0285デフォルトの名無しさん
2012/07/01(日) 22:51:55.64−WidgetProvider側
−onUpdate()
// ここでウィジェットのボタンにpendingIntent設定
// PlaybackServiceからカレント曲情報をもらってwidgetを更新
−onReceive()
if("jp.hoge.updateStatus".equals()){
// ここでサービスからのIntentを受け取ってbundleから曲情報を取得してウィジェットを更新
// 再度PendingIntentを設定(ウィジェット更新するたびにこれやらないとダメだった希ガス)
}
−PlaybackService側
−onStart();
// 再生処理とか停止処理を行う。
// 再生状態(再生中か停止中か)、シャッフルの状態、リピートの状態、再生してる曲情報などをBundleにくっつけて
// アクションを「jp.hoge.updateStatus」にしてIntentを飛ばす→WidgetProviderで更新処理
−マニフェスト
−WidgetProviderのところにIntent-Filterを設定 例:jp.hoge.updateStatus
0287デフォルトの名無しさん
2012/07/02(月) 00:13:13.07なくても動くの意味がわからないけど。
まずrunableを動くように作って、それからthread化しない? それとweb serverとか考えるとrunableをclient数分だけthreadにするでしょう。
0288246
2012/07/02(月) 00:17:40.55リストとVIewPagerのスクロール速度がかなり重くなっています。
それが重くなったのはアルバムにアルバムアートのサムネイルを割り当ててからです。
処理的には起動時にqueryでALBUM名取得→ALBUM_ID取得→ALBUM_ARTを各アルバム毎に実行して、
リストを表示するようになっているのが原因と思われます。
これでは遅いのでART情報のUrlをDB化してリストに貼付けていたのですが、
MediaScanで取得された更新分だけをDBにinsartする方法が分からず、元に戻してしまいました。
ググりまくってStack Overflowとかも何度も除いてみたのですが、いい方法が見つかりませんでした。
何かいい方法ありますか?
0289デフォルトの名無しさん
2012/07/02(月) 00:21:25.32これだと無駄に時間がかかるような気がします
もっと効率的な方法はないでしょうか?
0290デフォルトの名無しさん
2012/07/02(月) 00:57:32.09スクロールの速度を早くしたいだけなら
アルバムアートの読み込みをThread化するがよい
「Listview 非同期 画像」あたりでググると参考いっぱい
■ このスレッドは過去ログ倉庫に格納されています