Androidプログラミング質問スレ Part10
仕事なくて心は折れてるがスレは立てた。
>>1 乙 ・ユーザの星の評価は気にしないこと。 パフォーマンス部分は何もいじっていないのに、 動作がもっさりになったので星1とかはざらです。
前スレでCPUの話題がでたけど自分も知りたい ECLIPSEが遅すぎてPCを買い換えようかと思っているんだけど どれくらいのスペックで満足できんだろなぁ〜
他所で誘導いただいたので、こちらに投下。 ウィジェットを作ろうとしていて 他のアプリでSharedPreferencesを使って 保存した数値を読み込みたいんですけど読み込めますか? 教えて頂けませんかエロい人。
>>7 >>8 以外では同じ秘密鍵を使って、同じShareUserIdならば何も考えず読めそうなものだが。
(もちろんディレクトリ指定は必要だけれども)
画像ビューワみたいなので簡単にピンチでズームする方法ないの?
AndroidというよりJavaについての質問になってしまいますが、 様々なクラスで使うパラメータはどのように作成するものなのでしょうか。 設定やオプションで設定した項目を様々なクラスに反映させる場合、 メインActivityにパラメータを持たせて、ダイアログやリストなどクラスを作成するたびに 引数としてパラメータを渡す・・・というのはC言語だと野暮ったく格好悪いです。 NDKを使わずJava内でインスタンスを作って使用するようなことは出来るのでしょうか。
12 :
7 :2011/07/04(月) 23:04:53.77
>>7 ,8
あざますノ
読んでも理解出来無かったので、
教えて頂いたページを参考にしながら
調べながらやってみます。
>>11 オブジェクトのライフサイクルとか、どういう作りかによってアプリごとに良し悪しあるけど、
データをまとめたクラス作って、オブジェクトとして渡すのが一般的だと思う。
そもそもオブジェクトをパラメータとして渡すのが面倒であればSingletonみたいなグローバル
アクセスできるクラス作っておけばいいかも。
その他にSharedPreferencesとかSQLiteとかでもデータ共有できるけど、余計に面倒な気がする。
べつにJSONObjectでも困らないけどな。
16 :
デフォルトの名無しさん :2011/07/05(火) 03:26:48.59
すいません。教えてください。 現在、動画をライブ壁紙にするプログラムを書いていて、 それ自体は出来たのですが、どうしても動画が画面いっぱいに引き伸ばされて しまいます。サイズを変えようとsetFixedSizeを入れると エラーになってしまいます。1週間ほどアレやコレやと試してみましたが どうにもいかず、困っています。何か良い方法はありませんでしょうか?
あきらめる
キャリア判別する方法ってないんですかね? キャリアによって出すメッセージかえたりしたいのですが。
20 :
デフォルトの名無しさん :2011/07/05(火) 10:13:32.82
あるオブジェクトを singleton にしたところ、2つの副作用がありました。 1つは「画面の向きを変えても状態が保持される」 1つは「アプリケーションを閉じて再起動しても状態が保持される」 です。 どちらも static 変数が GC されないためだと思いますが、前者はそのままに、後者は回避する方法があれば教えてください。 そもそも singleton にする必要はあまりないと思われるので、singleton をやめて状態保存のコードを書けというのでも構いませんが、状態保存のやり方は分かっていないので簡単に解説してください。
現在JAVAの知識0の状態でAndroidアプリの開発を始めたいと思っています JAVA→Androidという流れではなく、最初からAndroidアプリを作って エミュレータや実機で動かしながら勉強を進めたいんですが、おすすめの参考書とか無いでしょうか? Webの解説や書店に並んでいる本とかも眺めてみたんですが、JAVAが分かる前提の物が多く 基本的な部分から分からない事だらけでした…
>>20 onRetainNonConfigurationInstanceでぐぐれ。
>>23 最低限オブジェクト指向を会得していないとトラブルばかり。
他のOOを知っているならAndroidフレームワークとJavaの両方同時進行すりゃいい。
JavascriptならわかるレベルならTitanium Mobileはどうだろう。
そもそも開発言語にほとんど馴染みがないならAndroidは諦めろ。
>>23 俺もその状態からスタートだったがサイトのチュートリアルとかサンプル見まくって
とりあえず何個か簡単なアプリ作ったぜ
それから本買ったほうが理解しやすいと思う
>>23 自分の言っていることがどれほど無謀なことなのか解ってないな。
四則演算できない人が微積分を学ぶようなもの。
基礎から勉強してください。
アカウントとったお $25が2030円 とるなら円高のうちにとったほうがいいぞ
スレタイの読めないサルは死ねよ
>>31 webview.getSettings().setLoadWithOverviewMode()
>>30 少しぐらいの雑談はいいじゃん
みんな初心者なんだろ
1スレぐらいでカリカリするなんてよっぽど余裕がないんだな
スルーしろよ
>>22 バックキー押したときもfinishされるぞ
>>32 それやったら実際の全体表示した時よりも4分の1ぐらいの大きさで、
余白だらけになるんだけど
>>36 じゃ、自分で調べろよ。事実デフォルトブラウザではそれを設定してる。
Androidで使える物理エンジンでわかりやすいのってないですか?
>>25 >>26 >>27 >>28 プログラムは昔VBやCを少しかじったぐらいです
やっぱり現状でAndroidアプリに手を出すのは厳しそうですね
先ずはJAVAから勉強して、基本的な事を覚えたらちょっとずつサンプルアプリの改造などしてみたいと思います
ありがとうございました
>>39 他言語をJavaに移植してみるのも勉強になる。
まぁ本購入はいつでも出来るし、Web見ながら慣れて行けば?
最初は自分のライブラリつくったり
少なくとも、何もしなければ何も出来ないのは確か。
GLSurfaceViewを使って画面のアニメーションを考えています。 RENDERMODE_WHEN_DIRTYを指定して手動更新にし、別スレッドで 描画用のFPS管理をさせ、更新の都度GLSurfaceView.requestRenderで 更新するような作りにしています。 onDrawFrameが呼び出される回数とスレッドから描画要求した回数が 時間経過によってだんだんズレてくるのですが、確実に画面更新させる 方法は無いでしょうか? (onDrawFrameが抜けてしまう。) そもそも別スレッドで描画タイミングを計るのが間違っているのかも 判断ついていません
>>43 こんなしょぼい端末で面倒なことやるなんて想定してないから
ネットにぶら下がって動くもの
>>43 今のままでやるんだったらFPSの管理見直せ
スレッドが呼ばれたら、次は何秒後に次の処理なんてやってるとずれていく
ボタンの配置なんですがListViewやWebViewの上か下かに付けたいのですが やはり下に付けた方が押しやすいのでしょうか(特に片手操作の場合) 上に配置すると押す際に画面が隠れてしまう気がするけど(左手で持って右手押し) 上にあるとPCの配置に近いので画面の収まりが良い気もする… それと複数の画面で上や下にボタンが不統一であるより 上部なら上に下部なら下に統一した方がよいのでしょうか
自分で使いやすいようにしろよ。。
>>47 迷ってるなら決めてあげる
上だ
って言ったら上にするの?
メリット・デメリットが分かってるなら、実際にやってみて
自分の好みにするとか他のアプリを参考にしてみたら?
>>49 自分は右側が操作しやすいぞ。右持ちで親指操作だからな。とか。
どうも、ずっと居座って質問してる香具師がいるな。
少しは自分で考えるとか調べるとか、成長して欲しいもんだ。
52 :
デフォルトの名無しさん :2011/07/06(水) 09:36:42.23
53 :
デフォルトの名無しさん :2011/07/06(水) 09:43:07.41
プロジェクト作成時に設定したMin SDK Versionを変更する方法ってありますか。
>>52 エラーになんと書いてあるかをまず読むんだ。何行目とか出てるだろ。
エスパーすると
#import android.util.Log;
だろうがな。
Javaの文法でimportの例を見てみ。
自分で学ばないとアプリなんて作れるようにならん。
顔認識を、カメラのプレビュー中にリアルタイムで行いたいのですが リアルタイムで行うにはどういった処理が必要なのでしょうか? プログラムはループしているものだと思うのですが、 デバッグモードで、カメラプレビュー中に適当なポイントにブレークポイントを設置しても ヒットしません。 センサー類を調べていたときは、傾きセンサーや地磁気センサーが変化した場合、 イベントリスナーをキャッチ出来たみたいですが それを応用したとしても、カメラは常に動いてるわけではないので、静止している間は プログラムが走らない事になります。 よろしくお願いします。
56 :
デフォルトの名無しさん :2011/07/06(水) 10:25:23.06
・onResumeが重複しています ・importの行はVariableDeclaratorを指定と出てる あと超初心者におすすめサイトあったら教えてくれ 今は、とりあえずこれの最終章までやるところ
57 :
デフォルトの名無しさん :2011/07/06(水) 10:26:29.70
TabHostのタブがタップされたら、setOnTabChangedListenerで取れるには解っているんだけど 現在選択されているタブをタップしたらって事って取れないのかな? iPhoneのTabbarだと、現在のタブをタップしたらNavigationが前の画面に戻るんだけど あんなような処理を書きたいんだよね よろしくお願いします。
OpenGLでテクスチャのロードを別スレッドでやろうと思ったら どうやら別スレッドで生成したテクスチャやVBOは別のものとして 認識されてメインでうまく描画できないのですが、 ローディング処理はどう書けばいいんでしょうか
60 :
55 :2011/07/06(水) 10:40:35.88
調べていたらみつかりました、失礼しました
>>58 listenerでタップされたタブを保存しておいて過去のものと比較すればいいんじゃない?
>>61 同じタブだったらってことだよね。
そう思ってたんだけど、
現在選択されているタブのタップはsetOnTabChangedListenerでは取れなくて。。
それとも、別なlistenerがあるのかな?
>>56 技評もレベルが落ちまくりだな。というか執筆者がダメだな。日本語が正しくない。
「Eclipseを起動して,〜を選択して,以下のコードを書き加えます。onPauseは,存在しないコードなので,各自追加してください。」
「Eclipseを起動して,〜を選択して,以下のコードを修正します。onPauseは,存在しないコードなので,各自追加してください。」
「以下のクラスをインポートするようにして下さい。 #import android.util.Log; 」
「以下の行を追加して下さい。 import android.util.Log; 」
普通なら、ソースがダウンロードできるようにするもんだがな。ガンガレ。
でもJavaそのものを学ぶのが先だと思うんだ。やっぱり。Java理解してたらこういうところでつまずかない。
64 :
デフォルトの名無しさん :2011/07/06(水) 11:09:28.53
>>63 ありがとう なんとなくわかった
文末に書き足してたわ
まだ足りないところもわからない状況でwebで収集しながらやってるところ
>>62 どうもダメっぽいね。
TabHost#setCurrentTab()で握りつぶされてる。
TabWidget#setTabSelectionListener()使えば取れるけどメソッドに手が届かず。
66 :
55 :2011/07/06(水) 11:40:07.38
/** * サーフェイス作成 */ public void surfaceCreated(SurfaceHolder holder) { if (camera == null) { try { camera = Camera.open(); //カメラopen } catch (RuntimeException e) { e.printStackTrace(); return; } } try { camera.setPreviewDisplay(holder); //映像表示先設定 //コールバック設定 camera.setPreviewCallback(new PreviewCallback() { ↓一度も呼ばれない public void onPreviewFrame(byte[] data, Camera camera) { 顔認識クラス.顔認識スタート関数; } }); } catch (IOException e) { camera.release(); //カメラリリース camera = null; e.printStackTrace(); } } setCallBackをnewして作成するだけでは、バッファ取得のCallBackが作動することはないのでしょうか?
パッケージ名ってどうしてる? Java奨励ではcom.xxxx.xxxxとかで所属のドメインとアプリ名とかがいいらしいけど とあるサイトではcom.アプリ名が無難って書いてあった。 まあ重複しなければなんでもいいとは思うけど
com.アプリ名は有りえんだろ。明らかに重複の危険が高いじゃねえか Javaのパッケージ名規則が何のためにドメイン使う規則になってると思ってんだ
69 :
デフォルトの名無しさん :2011/07/06(水) 11:56:15.65
勉強始めたばかりの初心者です。 プロジェクトを作成するときの「Build Target」とAndroidManifest.xmlで設定する 「targetSdkVersion」の違いがよく分かりません。 ここの部分は同じAPIレベルでよいのでしょうか?
70 :
デフォルトの名無しさん :2011/07/06(水) 12:15:23.23
>>63 できたー
すごいうれしーーーーーー
変移させただけだけど
>>69 Build Target は、どのOSバージョンを用いるか。
Minは、どのOSバージョンから動作okとするか。
>>69 (正確には違うけど)targetSdkVersionはどうでもいい。minSdkVersionが重要。
Build Targetはコンパイル時にどのレベルのAPIを使ってコンパイルするか。
minSdkVersionはマーケットやAndroid本体で、インストール可能かを判断するためのもの。
普通にアプリつくる場合は同じになる。
もし、1.6でも動くけど、2.3なら新しい機能も使えるアプリとか作るならminSdkVersionは4以下じゃなきゃダメで、
Build TargetをAPI level 9にすることで2.3のAPIもコンパイルできるようになる。
でも1.6環境で2.3の機能を呼び出すと当然ながらエラーになる。
リフレクション使わず2.3のAPIを叩いてしまうとminSdk設定しても1.6だと起動できなかったような気が
>>73 あ、そうだね。ClassLoad失敗しそうだ。
となるとminSdk≠BuildTargetってどんな時だろ?
EditTextの中にボタンを配置したり、プログレスバーを表示されているものがありますが、 あれはどのようにすればよいのでしょうか。 どこか参考になるHPなどないでしょうか。
EditTextの中? 興味があるがどんなアプリ?見たことないや。
標準ブラウザで検索するとEditTextの右にプログレスバーが出てこないっすか? 後×ボタン(というか画像?)をタップすると入力してるテキストが消えるってが結構あったり
78 :
デフォルトの名無しさん :2011/07/06(水) 15:00:16.65
>>71 〜74
ありがとうございます。
プロジェクトを作成するときに、BuildTargetを選択すると、
Min SDK VersionのところにAPIレベルが自動で入るので、
BuildTargetとMin SDK Versionは同じになるんでしょうかね。
Target SDK versionは、ここで指定されたバージョンでの動作はテスト済みであることを
明示する、とか、互換性設定を無効にするとか書いてありましたが、
どういったときに使うのでしょうか?
>>77 あれは多分LinearLayoutに透明のEditTextとかImageViewとか入れてるんだと。
見た目はいくらでも加工できるし。
例えば親のLinearLayoutにEditTextのデフォルトの背景画像指定すればそれっぽくなるんじゃない?
×ボタンはiPhoneとかじゃない?Androidでもやってるのあるのかな。
もしかするとそういう独自widgetとか公開されてるかも。
80 :
デフォルトの名無しさん :2011/07/06(水) 15:58:37.74
>>71 〜74
ありがとうございます。
プロジェクトを作成するときに、BuildTargetを選択すると、
Min SDK VersionのところにAPIレベルが自動で入るので、
BuildTargetとMin SDK Versionは同じになるんでしょうかね。
Target SDK versionは、ここで指定されたバージョンでの動作はテスト済みであることを
明示する、とか、互換性設定を無効にするとか書いてありましたが、
どういったときに使うのでしょうか?
1番目のActivityを残してすべて削除する というメソッドはありますか? iOSでいうと popToRootViewControllerAnimated にあたります
82 :
デフォルトの名無しさん :2011/07/06(水) 16:38:45.69
>>74 AndroidManifest.xmlに
android:installLocation="auto"
を書く時とか。
>>81 単に最初のactivityに戻りたいだけならFLAG_ACTIVITY_CLEAR_TOPが使えるんじゃないかな。
androidエミュレータにスカイプいれれる?もしくわ、スカイプとの連携を確認できる環境しってる?
エミュにスカイプいれたとこでまともに使えないレベルなのは分かり切ってるんで、 テスト端末使うべき どうしてもっていうなら、 エミュにマーケットアプリ入れる方法があるんで検索してやってみればいいよ
>>73 そのメソッドを使ってるクラスをロードしないようにしないとVerifyErrorが出るね
前はアプリ作成について語らうようなスレがあったと思うんだけど、無くなったの?
画面遷移について分かりやすく説明しているサイトってありませんか? ボタンやスピナーやリストビューといったものは単品で使えるようになりましたが どれも最初に通るアクティビティ内で処理を行うもので多階層にはなっていません。 C++のMFCで言うCWndがAndroid(Java?)のViewで UI単品かUIを1つにまとめたクラスを呼び出すみたいな感覚でいいのかな。
MFCはC++特有では無く、M$特有ね。
>>89 そもそも論でいえば画面遷移とは何かって事だな。更に言えば画面とは何か。
Androidで言えば画面≒Activity。だからAndroidで画面遷移と言えばActivityの遷移。
(TABとかfragmentの場合は多少話が異なってくるけど)
多階層ではないけどViewは入れ子にできるものもある。(ViewGroup系)
ただViewをまとめて更に機能までカプセル化するといった事は簡単にはできない構造。
(カスタムビューでゴニョゴニョすればもちろん可能だけど)
これはリソースが厳しく制限されている環境に特化してるという点が深く関与してると思う。
直接プログラムの話じゃないんだけど エミュレータの、メニューボタンをクリックしても反応しないときがあるんだがなぜだろう? 反応しないときがあるというより、ほとんど反応しない。が、反応したときもある その状態でもF2キーを押すとちゃんとメニューが出ます
Activityとは関係ないスレッドからアラートダイアログ出す方法ないですか? ↓のようにして、(new TestThread()).startみたいにActivtyクラスから呼び出すと例外が発生してだめです。 public class TestThread extends Thread { public void run() { new AlertDialog.Builder(PalletViewer.this) .setTitle("ほげほげ") .show(); } }
>>94 UIスレッドからしかダイアログは表示できません
>>94 DialogはActivityに紐づくものなので多分無理。
それよりは、ThemeをDialogにしたActivityをIntentで起動してやるほうが可能性が高そう。
acctivityのハンドらに投げつければ普通に別スレッドから ダイアログ出せると思うが。
Handlerが動作しているスレッドがメインスレッドであれば良いので 別にActivityのHandlerに投げる必要は無い
100 :
47 :2011/07/06(水) 23:55:43.08
ボタンの配置ですが上に固定してみました。 しばらく使ってみて気に入らないようなら下に移す事も考えてみます。 それとPCのアプリから移植中なのですが 操作はシンプルに作るとiPhone本に書いてあった事で PCだとカーソル選択してボタンで決定という流れだとして モバイルだと直で選択決定の方が操作しやすい(ひとつでもボタン操作を減らす) というシンプルな操作方が正解なのかなと(削除時のダイアログでYes/Noは必須ですが) PCのような丁寧な作りにするよりショートカット的な作り方になってしまうのかなと 作っていると色々と考えさせられます。
>>94 テストしてないけどこんなのはどうですか?
Toastで似たようなことしてます。
public class TestThread extends Thread {
public void run() {
new Handler(Looper.getMainLooper()).postAtFrontOfQueue(new Runnable() {
@Override
public void run() {
new AlertDialog.Builder(PalletViewer.this)
.setTitle("ほげほげ")
.show();
}
});
}
}
102 :
43 :2011/07/07(木) 01:52:40.15
>>46 やっぱそこ変えないとダメですか
アニメーションでどういう形式が一般的なのか
知らないんだよね
ゲーム系書籍でも漁った方が良いのだろうか・・・(´・ω・`)
誰かこれの続きたててよ レベル低くて立てられない 【Google】Androidアプリ作成part6 やっぱり雑談スレもあったほうがいいと思う
知ってる範囲では、part8で終了してたけど。
乙
お疲れさん
影の色が白いんだけど黒に変えられる?
SurfaceViewを2個重ねて、上のSurfaceViewにカメラのプレビューを加工して表示するAR的なアプリを作ってるんだけど、 最初の起動時はうまく表示できるんだけど、onPauseしたあとonResumeすると、なぜか上のSurfaceViewが表示されない。下のSurfaceViewは表示されてる。 加工したデータは正しいし、描画されてるはずなんだけど、なんで上のSurfaceViewは表示されないんでしょうか・・・
分からん… previewCallbackをどうやって使えばいいんすか?orz Activityに implements Camera.PreviewCallbackを追加 サーフェイス作成中 camera.setPreviweDisplay(holder); camera.setPreviewCallback(this); implementsしたことによって、作成される。 onPreviewFrame(byte[] data, Camera camera) { 処理 } って形にしたいんだけど、昨日のとおりやっぱよばれん・・・ implementsを外して camera.setPreviewCallback(previewCall);に変えて private final Camera.PreviewCallback previewCall = new Camera.PreviewCallback() { public onPreviewFrame(byte[] data, Camera camera){ 処理 } } に変えてもやっぱり通らない…何でですか?orz
プレビュー自体は出来てんの?
>>111 画面プレビュー自体は表示されています。
/** * サーフェイス作成 */ public void surfaceCreated(SurfaceHolder holder) { if (camera == null) { camera = Camera.open(); //カメラopen } camera.setPreviewDisplay(holder); //映像表示先設定 camera.setPreviewCallback(savePreviewImage); } /** * サーフェイス変更 */ public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { if (camera != null) { //Svが変更されたら映像停止 camera.stopPreview(); //変更サイズに併せて映像変化 setPictureFormat(format); setPictureSize(width, height); setPreviewSize(cameraWidth, cameraHeight); //映像再開 camera.startPreview(); } } 文字数の関係で、try~catch部分は削りました。 大体こんな感じの流れでプレビュー画面作って、プレビュースタートしています。
今implements抜いてる状態 camera.setPreviewCallback(ここ); ここの部分を、this / そのまま中でnewして作成 / cback等適当な奴を外部に作って呼び出し 3パターン試しても onPreviewFrameは通らない。。 これは、プレビューが始まったら自動的にここを通るような感じじゃないんですかね… あ、後はonCreateの段階で cameraView = (SurfaceView) findViewById(R.id.camera); SurfaceHolder surfaceHolder = cameraView.getHolder(); surfaceHolder.addCallback(this)l surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); プッシュバッファーとかはセットしてます。
大体同じような作りで ちゃんとコールバックが呼ばれてるけどなぁ 何が違うんだろうね
AdapterのnotifyDataSetChanged()を実行すると リストビューがタップに反応しなくなる(処理がおこわなれないのではなく、色すら変わらなくなる)のですが、 何か設定しなおさなければならないことがあるのでしょうか?
117 :
110 :2011/07/07(木) 16:42:41.93
呼び出し方が悪いんですかね?後はxmlに特別な処理追加必要です?
ブレークポイント中においておいても反応ないし…orz
取り敢えず現状は
>>110 の後者状態で使い方は間違いない感じでしょうか?
implements 無しで
camera.setPreviewCallback(呼び出し);
--
private Camera.PreviewCallback 呼び出し = new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
適当な処理; int aとか
}
}
正常に動いてる場合、int a当たりにブレークポイント付けていたら
デバッグモードで、止って。 再生ボタン見たいな ◇←の半分連打しても毎回止まる用な感じになるんですよね?
一度も今止まりませんが…
>>116 継承元はどんなAdapterかくらいは書こうな。
どっから呼んでるかって事と、
オーバーライドしたnotifyDataSetChangedが何をしてるか
が問題かもしれんな。
アダプターは変数がいくつか書いてあってそれをgetするだけで、 それ以外はgetViewしてるぐらい。 で、このgetViewで○○番目のリストならリストをaddして、notifyDataSetChangedを呼んで、更新してる。 notifyDataSetChangedを呼ぶと、リストは増えないし、notifyDataSetChangedを呼ぶとリストは増えるけど 既存のリスト含め、タップが反応しなくなる って感じです。
>>117 int a; じゃブレイクできないけど
まあ、概ね間違ってないと思う
試した時はSurfaceViewを直接newしたからxmlとか何もしてないよ
プログラムが大きくなってきて、1つのソースファイルがデカくなったんで 分けたいんだけど、どう言う方針で分けたほうが効率がいいんだろう?
同じ変数を使いまわす似たような処理の塊を1つのクラスにすればおk
>>119 > notifyDataSetChangedを呼ぶと、リストは増えないし、notifyDataSetChangedを呼ぶとリストは増えるけど
すまん。誰か解読班を呼んでくれ。
まずArrayAdapterを継承してると仮定して、ArrayListとかに10個要素があるとする。
そのリストの9番目をタップするとActivity側のonItemClickだかが呼ばれ、
そこでArrayListに要素をひとつaddする。
Listに変化があったからnotifyDataSetChangedを呼ぶ。
そうすると表示は更新されて11個のリストになって、
スクロールもするけどどの項目をタップしてももうonItemClickが呼ばれなくなる。
って解釈でいいのか?
getViewでnotifyDataSetChangedを呼ぶのイクナイ。たぶん。
getViewは要求されたViewを整えて返すのがお仕事。
getViewでonClickとか記述してる?それはイクナイ。
ListViewの要素でonClick処理しても良い事何も無い気がする。
ListViewそのものに対してonItemClickを処理する。
さてどこまでエスパーできたか。
>>109 そんなことやったことないけどinvalidate()呼んでやるとかは?
でも内部で合成処理して表示はひとつのviewで済ませたほうがいいと思う
→解読班 getViewのpositionがある数のときにリストにaddする add後にnotifyDataSetChangedをするとリストに新しいものが増えるが、タップが反応しなくなる notifyDataSetChangedしなければリストにaddで増えたものが表示されないが、タップは変わらず正常に動作する →getViewでnotifyDataSetChanged記述 ためしにgetViewでadd後、ボタンでnotifyDataSetChanged実行させ、listをタップすると以下のエラーが発生 The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. (省略) →getViewでonClick記述 リストに対してsetOnItemClickListenerをcreate時にしている一度のみ どうにもボタン後のエラー内容からして、 getViewが実はスレッドで動いてるんでそこで変なことすんなよカスってことのようですね 処理するタイミングを考え直しますありがとうございます
>>126 getView()はAdapterの○○番目に表示するためのViewを返すメソッド
その中でAdapterの状態が変わったというnotifyDataSetChangedを呼んだら
まともに動作するとは思えないんだけど
>>121 そういうのってボトムアップ的な考えで、必要な処理をどんどん追加してソースがカオスになることが大半なので、
トップダウンの考えで
メソッドやクラスの呼び出しだけをまず書いて、
メソッドの中の処理は後回しってやり方を使ってます
文書だけだとうまく説明できないなぁ
surfaceviewでリソースの画像を回転できますか?
130 :
109 :2011/07/07(木) 20:22:57.25
原因はとりあえず分かった。 ひとつのActivityに複数のSurfaceViewを重ねると、ZOrderってレイヤーの順番が割り振られるらしいが、 一度アプリを停止させて再び起動すると、このZOrderがバラバラになるらしい。 setZOrderMediaOverlayってメソッドで調整できるらしいが、うまくいかない・・・
>>131 一応でたんですけど
動いてるものには駄目みたいです(表示されない)
133 :
129 :2011/07/07(木) 22:00:56.36
追記 座標を入れたらうまくいきました
javaに加えてxmlとか必要だから混乱するぜ 機能追加したい場合はその機能に必要なソースをメインクラスにきじゅつして さらにmain.xmlにも記述すればいいんか 検索ボックスと音声検索をつけたいんだ
どんどんきじゅつしてください
>>121 たぶんどうやれば動くか(処理)しか考えてないから。
個人的には規模が小さい数千行のアプリなら別にいいんではないかと思うけど。
OO的には
ある機能やデータに特化した(凝集度が高い)クラスを抽出し、
なるべくクラス間の結合度が弱いのが良いとされてる。
リファクタリングとかGRASPパターンでググれ。
効率がいいかは解らないが・・・
>>121 クラスごとにファイルを分けるのが普通だと思うよ。
ビュー関連、ネット関連、xml関連とか処理ごとにソースを作って
本筋のソースから呼び出して使う。
汎用クラスとしてうまくまとめてあれば後々使いまわしも効く。
「Fireworks」みたいなアプリ作りたいのですが あれはgifアニメを移動させてるのでしょうか? というかandroidではgifアニメは動かないみたいですが どうやってるんですかね 画像をパラパラアニメのようにするにしても 容量がでかくなると思うんですが
Fireworksってadobeかと思った
gifアニメだって切り詰めれば、フレームごとに数枚値画像が差し替えてるわけなんで、 アニメーションにする画像を保持して、 タイマーか何かで差し替えればいいかと
fire 〜は、内部計算だったかと。
>>144 簡単な物理演算をして一個一個描いてる
AfterDarkにも同じ名前のがあったなぁ(遠い目)
146 :
110 :2011/07/08(金) 14:05:00.36
昨日のものですが、一応解決?しました。 camera.setPreviewCallback(new ごにょごにょ) ↑これを、 surfaceCreated関数の中ではなく、 一度カメラで撮影後に追加したら、PreviewCallbackが呼ばれるようになりループするようになりました。 一度PreviewCallbackからブレークポイントを外し、カメラ撮影部分にセットしなおして シャッターをきると、カメラ撮影部分でブレークポイントが止まったので、問題なく動いてると思われます。 これは結局、宣言部分の位置が悪かったのでしょうか? それとも、他に何らかの要員があったんでしょうかね・・・
一度カメラに撮影後じゃなくて・・・ 撮影関数の中に入れて、撮影するとです。
>>145 AfterDarkか。懐かしいな。
Flying Toasterには感動したもんだ。
>>146 別のとこで setPreviewCallback してね?
昨日試した時は surfaceCreated で設定して何の問題もなかったぞ
>>149 レスどうもです。
うーん、implementsで、Camera.PreviewCallbackを登録していないので、
別なところでやっていたら、ビルドエラーになるので使っていないと思います。
現状、SuraceCreatedではCallbackが働いてくれないみたいなので、
カメラプレビュー作動した後に、メニューボタンを押しスタートを押すと
働く感じの代替処理にしました…
クソプログラムのせいか…(´・ω・`)
あ〜XML書くのめんどくせ〜 プログラムやっているよりレイアウト作ってる時間のほうが長いよw どうにか楽に出来る方法ないのか〜〜〜〜〜
>>152 追記:
エミュレータと実機で見た目も変わるし、もう泣けてくるwww
画面サイズ固定で、全部ビットマップにしちゃおうかなぁ〜 orz
>153は、どんなに複雑な事をやってるんだろう。。 シンプルが一番!
>>153 xmlで設定するパラメータの大半はjavaコードからも設定できるぞ。
そうすればプログラムを書くのに専念できるなw
真面目な話、javaコードから生成したほうが話が早いこともあると思う。同じようなフォームを延々と並べるような画面とか。
あと実験用プロジェクトを用意してレイアウトの振る舞いをとことん追求してみるのも重要なこと。検証の成果があとに残るからな。
>>155 ものによっては面倒だけどねえ
LayoutParamsのキャストとか
>>154 ,155
サイクルコンピュータもどきを作っているんだけど、色んなステータスを
1画面でカッコ良く表示したいと思ってレイアウトに凝ったら収拾つかなく…orz
縦横とか端末の画面サイズとか考えると面倒だなぁ〜w
やっぱ、プログラムからレイアウトしちゃうか・・・
>>158 凝ったレイアウトにするんだったら逆にXMLの方が楽だと思うけど…
ある程度のViewの塊を一つのXMLに定義して
メインの画面でIncludeするようにするとすっきりする
>>158 レイアウト分割してる?
LayoutInflaterとかxmlのincludeタグとか使うと色々省力化できるぞ。
大抵のデザインはLinearLayout、RelativeLayout、LayoutInflater、includeの組み合わせとjavaからの微調整で何とかなると思う。
全体の大まかな雛型と個別パーツをしっかり分割すれば変更も容易になる。
あとはRelativeLayoutを上手く使えるようになれば LinearLayoutをネストごちゃごちゃやらなくていいようになる
>>159-161 サンクス。まだ修行が足らないようだw
xmlの勉強をまだやらないとダメみたいです・・・orz
とりあえず、テキスト表示でみている限りはプログラムは完ぺき
あとは、表示だけだ・・・ガンバレ俺!
もうちょっとマシなlayoutエディタでもあればいいんだけどなー eclipseのあれは確認用だし でもよくあるHTMLエディタみたいにゴミタグ大量混入だけは勘弁な 直すのめんどいw
165 :
デフォルトの名無しさん :2011/07/09(土) 06:59:45.97
画面Aからボタン1を押したときに画面Bに移り、 画面Bでボタン2を押したときに、スレッドが動き、スレッド内で 計算した数値を画面Bに表示させます。 この状態で、画面Bからもとの画面Aに戻ったとき(バックボタン)に スレッドを動いたままにしたく、画面Aから再度 ボタン1を押したときに、動いているスレッドから数値を受信して 画面Bに戻ったときに最初と同様に数値を表示させたいのですが どのように実装したらよいでしょうか。 画面Bから画面Aに戻るときに、画面BのActivityをDestroyさせず、 かつ画面Aの元のActivityを表示させたいです(新規にActivityを呼ぶのではなくて)
処理スレッドの起動をApplicationのインスタンスに移譲するなり Service で計算するなりすればいい 少なくとも最後の2行のような実装にすべきじゃない
>>165 166も言ってるように最後の2行の処理はやってはダメ。
HandlerThreadをつくっておいて、そこから実際に処理するスレッドを起動させる。
BはonResumeでHandlerThreadに自分のHandlerを渡す。onPauseでそのHandlerを解除する。
HandlerThreadは、起動したスレッド処理の終了を検知したらBが登録したHandlerがあればそこに通知。
Bは渡したHandlerからの通知で結果を表示。
またonResume時にスレッドの処理結果が出てればそれを表示しておく。
くらいにしないとちゃんと表示できないと思われ。
>>164 eclipseだよ、xml直接いじってる
無くてもいいんだろうけど、上のやりとり見てて、あると取っつきやすくなるのかな?とか思っただけ
他のosの開発環境見てるとパーツぽんぽん置いてドラッグとかして調整なんて半ば当り前になってるし
xmlとjavaやらんと意見から大変よな appinvatorがもっとつかえればいいんだが
稼げないといわれてるのになんで俺だけ稼げてるのか不思議だったが アホしかいないんだな
アプリで稼ぐにはどうすればいいですか? 有料にして稼ぐのと広告で稼ぐのとどっちがいいでしょうか。 できれば 170氏に答えてほしいな ☆ミ
有料で稼げ 広告なんて踏むやつおらん
>>172 AngryBirdは広告だけで月数千万稼いでるみたいですけどどう思いますか?
能ある鷹は爪隠すのよ
機種によって画面の比率が違いますが [a]描画される画像等の比率が変わっても画面内に描画するもの自体は同じにする [b]描画比率はそのままで、余った部分に黒帯などを付加させる [c]描画比率はそのままで、余った部分は表示範囲を広げる これらのどれが無難なのでしょうか。 極端に比率が違う(1:1とか超ロングスクリーンとか?)場合はあれですが タッチの当たり判定を考えれば[a]が良いのではないかと思いました。 色々アプリを試していますが、[b]の黒帯に気付いたことがないので ほとんど[a]か[c]の対応? これらで実はこんな問題があるよ〜といった情報もあればお伺いしたいです。
どうせお前以外使わないんだからかってにしろよ
(´;ω;`)ブワッ
でも最低限そこら辺をどうにかしないとコメが煩くなるから困る。しかも英語で。
[d]layout_weightを使ってどんな画面でもそれなり表示されるようにする ゲームとかだと[b]もあるね比率変えるとゲームにならないものもあるし
え、それっていいのか と思ったけどほとんど無料だし 有料でも返品猶予があるから放っておけレベルか。
>>173 AngryBirdsのAndroidの場合、700万DLで月額8000万を稼いだらしい。
1ユーザによる広告で月11円。
1万DLの小ヒット作品で同じ程度のアガリだとすると11万/月。100円で売ると70万か。
月2000DLづつ単純に増加するとしたら100円で14万/月、
広告だと2.2万→4.4万→6.6万→8.8万→11万
ゲームのような瞬発力のあるアプリだと売り切りが良さそうだけど、
AngryBirdsのようなパズルとか、息の長いアプリだと広告の方がいいかもしれないなぁ。
あと広告もクリック型とインプレッション型による違い、露出タイミング、利用時間その他で
色々変化する訳か。難しいんだな。
とらぬ狸の皮算用。
実機単体でスクリーンキャプチャとるための簡単なメゾットとかないの?
メソッドはない。それ以上にメゾットもない。
夢も希望もないのか
スクショってブロガーとかに需要高い機能だと思うんだが何でぐぐるは公開しないんだろな
昨夜、xmlでガッカリだった者ですが、みなさんxmlはどうやって勉強しましたか? 参考になる書籍などありまですでしょうか?
>>187 > みなさんxmlはどうやって勉強しましたか?
トライ&エラー
ActivityGroupでTabActivityを開くことが出来ないのですが可能なのでしょうか? TabActivityのクラス自体が間違っている可能性もあるためどっちが問題なのか・・ ボタンを押したら Intent intent = new Intent(getApplicationContext(), child.class); Window childActivity = getLocalActivityManager().startActivity("child",intent); を実行するのですがstartActivityでエラーが出て落ちているようです。
>>189 エスパーするとchild.classがManifestに登録されてない。
>>186 携帯だから個別のアプリからスクリーンショット撮れちゃうのはセキュリティー的にまずい
ハードキーの組み合わせでユーザの操作でのみ撮れる端末はある
193 :
189 :2011/07/10(日) 01:33:18.74
>>191 流石ここのエスパーの鍛えかたは違いますね
>>192 俺馬鹿だからよくわからんのだけど
アプリ側の制御でキャプチャ撮れると何か悪いこと出来ちゃうの?
>>194 お前が今使ってるPCのデスクトップのキャプチャをネットにさらすウイルス出回ってたが
別に困らないよな?
>>195 あーなるほどね。
じゃあ、間単にキャプチャできるあいぽんはやばいってこと?
>>196 iPhoneもハードキーによる操作でしか撮れない
XOOM上でListFragmentってのを使ってリストを表示している。 表示するデータは通信でとってくるから、 取得までの待ち時間は、ListFragment側にお任せしてある。 よくわからんのだけど、ListFragmentにAdapterをセットしないと、 画面中央にProgressBar(だっけ?)が表示されて、ずっとくるくる回ってくれてる。 で、同じことをAndroid2.2に(互換ライブラリだったか使って)移植したら、 取得までの待ち時間に、画面がなぜか真っ黒のまま。 何か処理間違えたのか、互換ライブラリの仕様なのか、 誰か詳しい人いたら教えてくださいませんか。
その互換ライブラリの仕様は?
アプリをエクリプスのワークフォルダから実機にUSBケーブルで いちいち移しながらインストールしてるんだけど やりすぎてUSBカードの認識エラーがでるようになったから 仕方ないんでドロップボックス使ってウェブ経由で送るように したんだけど、他になんかいい方法ない?
訂正 ×USBカード ○SDカード
>>198 adapterセットすれば同じなんだったら大した問題じゃなくね?
>>198 互換ライブラリで作ったものを3.0で動かしてみそ
>>200 ftp,web,samba鯖立てるとか?
opera使いならopera unite手軽でいいかも
>>200 えっ?
単純にeclipseでrunとかdebugでインストール+実行ができるけど。
リリース版だとしてもadb pushでいけるよね。
少なくともSDカード経由はしない。
>>199 Android公式のどこかに
「我々は3.0と同じにするために努力している」
とか書いてあった。
ならば仕様は同じなのが普通だとおもふ。
>>202 Adapterセットするまで画面真っ暗なので、
通信に時間がかかると「あれ、フリーズした?」となること請け合い。
>>203 なるほど、試してみる。
Timer処理って別スレッドなのでしょうか? GLSurfaceView.Rendererなどで毎フレーム処理するようなアプリじゃないのでタイマーでいいかなと思っているのですが、 タイマーが別スレッドだと参照しているアドレスがボタンを押すことで変化や削除されたという場合に 不正アクセスで止まりそうな気がしました。 タイマーもメインスレッド上の処理であれば気にする必要な無いのですが・・
よーわからんけどスレッドセーフに組めば良いだけじゃね?
>>206 Fragmentはまだ学習してないんで適当だが、
普通adapterはデータがなくてもsetするもんじゃないか?
cursorAdapterもcursorをnullにして最初渡すのが普通だと思ってたが。
>>205 それをやってたけど出来なくなったって話じゃ?
>>209 あれ、そうなん?
こちらは、取得したデータが0件なら、それは0件というデータとして扱う、というスタンスで
「データを取得してからアダプタをセット」で貫いてたんだが。
ってかデータが0件なアダプタ渡したら、先にEmptyViewが表示されるし。
って、CursorがnullのCursorAdapter渡したら、何が表示されるん?
ぬるぽとか発生しそうだったので試したこと無いわ。
そういやListActivityのときはアダプタ渡さなくてもEmptyViewが表示されていた気がする。
何かいろいろ違う。
>>211 アダプタってデータとは切り離されたモノだという認識。
cursorAdapterにnullを渡すってのはちょっと言い過ぎたかも。
>って、CursorがnullのCursorAdapter渡したら、何が表示されるん?
素直にemptyが出てくる。
でもデータ読み込み中なら、emptyViewに「読込中」とか表示すればいいだけだし。
自分もデータをクラウド側から取得するlistview作ってるけど、
読み込むごとに動的にリストが更新されていくってのもなかなか乙な感じ。
前に作成したAndroidを、別方向に改良するってことで 前プロジェクトを流用したいのですが、 そのままプロジェクトファイル名と、アプリ名を変更しただけでは 同一アプリとして認識されてしまうのか、デバッグモードで実機に送った際に 上書きインストールになってしまいます。 別アプリとして認識させるにはどこを変えればいいのでしょうか?
>>214 ありです。javaの問題でしたか
リファクタリングでパッケージ名の最後に.secondを追加して
importで使ってる部分に.second追加して、AndroidManifestにも追加して
リフレッシュ→クリーンアップ→再起動してやったー\(^o^)/
インストールはされるようになったけど、予期せず停止しますたって表示されるようになって
まともに動かないorz
別プロジェクト作って、1つ1つクラスをインポートすべきだったかな・・
リストビューをフリックしたときのスクロールが移動してる量を取得したり、変更する、ということはできないのでしょうか。 たとえば、ある速さ以上の速度で移動しないようにするとか、フリックするとタップするまで低速でずっと動くようにするとかです。
クラスパス指定したところのタイトルに 勝手に変更した奴が追加されてたorz お騒がせしました、有難う御座いました
>>206 startManagingCursor/stopManagingCursor がなんか関係していないか?
>>218 やり方教えてもらえませんか!オナシャス!
>>215 いや、パッケージ名ってのはJavaの話じゃなくてManifestファイルの事だろ。
<manifest 〜 package="これ" 〜>
確かにJavaのパッケージ名に普通は一致してるけど。
>>215 あとリファクタリングで落ちるようになるのは普通の話。
・manifestファイルのactivityを更新してない
・layoutの独自widgetが更新されてない
・eclipseのリファクタのバグでmanifestファイルが壊れる
これくらいは普通にある。
>>221 Σ(・ω・`)
いやまぁ…プロジェクト毎にjavaパッケ変えるもんなのか?って思ったけど
Manifestだけでおkだったのか…有難う
>>223 なんか心配だな。
<activity android:name=".hogeActivity" 〜>
とかって書いてあると packageはmanifestで指定されているものになる。当たり前だけど。
だから <activity android:name="jp.co.nantara.app.hogeActivity" 〜>
と書かなきゃダメよ。
とかいっぱい気にしなきゃダメなとこあるんで。
webviewでjavascriptで何か要素変えるじゃん? でも、見た目が変わらんのだけど、何かリロードとかリフレッシュみたいな動作が必要なの? それともただjavascriptが不発に終わってるだけ?
不発だな、それは。
>>224 一応動きました(最もリファクタリングした後のでなので、javaの方も変わっています、動かなかったのはクラスパスのとこが変に変更されていたいました)
つまりjavaファイル内は
package jp.untara.android.untara;を固定として
AndroidManifestを
package = "jp.unun.android.nantara"に変更して
<activity android:name = "jp.unun.android.nantara.hogeActivity" 〜>
に変更ということでしょうか?
activity andorid:nameは .hogeActivityって感じに指定してるので前者になってます。
とあるPC版のみ(見た目が)対応したWebサービスがあり、自動ログインし、PC版の見た目をスマフォ版の見た目に変更したい。 自動ログイン部分はローカルに設定値(id、pass)の入ったhtmlファイルを設置してあり、webViewで開くと自動ログインし、通常のPC版の画面が開く。 このと、JavaScriptのinnerHTMLみたいにして表示されているHTMLデータの見た目をスマフォ用に変更(置換)したいのですが、何か良い方法がありますでしょうか? 今考えているのは、Javaでログイン後のhtmlデータを取得して、 そのhtmlソースをStringで取得して、ひたすらシコシコ置換して(スマフォ用に)整形し、 最後にhtmlファイルとしてローカルに保存し、そのhtmlファイルをWebViewで開くと言うものですが、 こんな面倒な事しないとダメなんでしょうか? もっとスマートな方法があれば是非、ご教示願います。
そのとあるwebサービス運営してるとこにスマホ版サイト作れやって要望出せばいいんじゃね
最近よく聞く案件だなぁ。仕事でやってんだから自分で考えたほうがいい。 ここのところ暇だから雇ってくれるなら助けようか。
プッ
そんな仕事あるわけねえだろw
233 :
228 :2011/07/11(月) 17:40:26.65
>>228 どの工程がどんな風に面倒くさいと思ってるのかよくわからんが(どんな方法をとるにせよ元htmlのパースと新UIの構築は自力なわけで)、
WebView#loadDataに生成したhtmlを流し込むとか、scriptタグを流し込んでjsだけでui生成させるとかで対応できない?
あと、addJavascriptInterfaceとか。
教えてください。 DatePickerDialogと同じ機能で 設定の時間設定画面のような数字リストをスクロール選択させたいのですが そういったのは標準で用意されているのでしょうか? 標準でないなら実現するにはどのようにすればいいのか教えていただければ幸いです。 以上よろしくお願いします。
>>233 じゃ、素直にWebサービス側を直せよ。
自分のサイトじゃないなら諦めて適当にスクレイピングすりゃいいじゃん。
>>236 TimePickerDialogじゃなくて?
よくネットにあるさんぷるあぷりを動かそうとコピペしても動かないけどなんなんだろうな エクリプスでエラーもないし 停止しましたっていわれてもねえ
Notificationついて質問させてください。 ステータスバーに表示されるレイアウトについてなのですが、 時間(when)を表示しないようにするには、 カスタムレイアウトにしないとだめでしょうか?
>>239 javaだけで動くわけじゃねえし
動かないものを晒してる俺みたいな奴もいるし
ログ見れ
242 :
デフォルトの名無しさん :2011/07/11(月) 20:16:39.80
>242 設定はしていないのですが、通知した時刻が勝手に入ってしまうみたいです。 なにか設定が必要だと思ったのですが機種依存だったりするのですかね? エミュレータとGalaxySは勝手に入っちゃいます。
244 :
デフォルトの名無しさん :2011/07/11(月) 21:38:43.18
VideoViewを使ってローカルファイルの動画データを再生したいのですが、 MODE_PRIVATEで書き出したファイルは再生できませんでした。 データを直接公開したくないのでアクセス権を変更せずに再生したいんですが、 いい方法はないものでしょうか。
検索機能のリファレンスの public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); handleIntent(getIntent()); Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA); if (appData != null) { boolean jargon = appData.getBoolean(SearchManagerActivity.JARGON); } } JARGONでエラーになるんですがなんですかこれ
>>245 つか、どこのサンプルだよ?
SearchManagerActivityなんてgoogleさんに聞いても出てこない。
>>247 できました。ありがとうございます。
この発想はなかったです。
初歩的なんですが別のクラスにデータを渡すはどうやるのでしょうか? タッチイベントの値をSurfaceViewに反映したいのですが サンプルとかみてもmainとSurfaceViewクラスというように別れていて どこでデータを渡してるのかわかりません
>>249 SurfaceViewでタッチイベント発生すると思うんだけど…
他のViewで発生したタッチイベントをSurfaceViewに渡したいって話だったら
そもそも使い方間違ってるから考え直せ
>>250 SurfaceViewのサンプルで
public class SurfaceViewView extends SurfaceView
implements SurfaceHolder.Callback,Runnable {
・・・・
ていうのがあるんですけど
この中にタッチイベントのサンプルで
public class TouchView extends View {
private HashMap<String,PointF> points=new HashMap<String,PointF>();
・・・・
をいれるのですか?
とりあえずエラーになります・・
>>251 SurfaceViewはViewのサブクラスだから
Viewで発生するイベントはすべて発生する
全体のソースが無いからなんともいえないけど、
TouchViewでpointsに値設定しているメソッドは
SurfaceViewViewでも呼ばれる
コードをコピーするんじゃなくて、内容を理解しないと後々つらいぞ
>>252 > コードをコピーするんじゃなくて、内容を理解しないと後々つらいぞ
理解していたら、こんな質問はしてないだろう。
255 :
sage :2011/07/12(火) 03:18:08.72
教えてください。 LiveWallpaperのアプリを作ったんですが、 2.2ではどの機種でも動くのに2.3ではどの機種でも強制終了します。 ギャラなどはバージョンアップしなければ動きますが、 バージョンアップするとやはり強制終了します。 原因が、さっっっっ・・・ぱり分かりません。 何がいけないんでしょう?(・・?
>>255 強制終了するってことはエラーが発生してるわけですよ
エラーが発生してるってことはLogcatにログが出てるんですよ
それを見なきゃエスパーでもない限り原因なんて分かりません。
ですよね。 明日の夜、友達からまた実機を借りれるのでログを確認してみます。
>>238 返信ありがとうございます。
プラスマイナスのボタンを押す形式じゃなくて
フリップしてスクロールさせたいのです。
259 :
251 :2011/07/12(火) 14:44:40.12
>>258 自前で用意するしかない
たいした手間じゃないが非効率
>>255 です。友達から借りれませんでした。
せっかく、しゃぶしゃぶをおごったのに・・・(/_;)
>>261 おぉ!ありがとうございます。
ざっと2回ほど見てみましたが特に該当するようなものはありませんでした。
・・・多分。
質問させてください。 Android開発を最近始めたんだけど 自宅環境では問題なく動くソースをメモ帳にコピーして 会社環境に持っていったら「ソースがない」や 「activitythread.performlaunchactivity activitythread activityrecord intent」や 「〜has stopped unexpectedly〜(マニフェストがおかしい?)」で止まってしまいます。 (ソースは変ず、eclipsの再設定とかしてたらメッセージがかわった) OS環境(自宅:Win7 SP1 Pro 64bit 会社:WinXP SP3 Pro 32bit)は違いますが ソフトは基本的に同じものを入れてます。 環境変数や設定も同じにしているはずです。 なぜでしょうか?? 所詮エミュレータはエミュレータなのでしょうか? よろしくお願いいたします。
Activityクラスで、 setContentView(editText); setContentView(listView); setContentView(editText); って順番で実行するとediteText上で文字が打てなくなるのですが、 どうしたらいいんでしょうか?
>>263 Subversionのサーバでも立てれば?
>>264 ListViewの下のEditViewが表示されないってこと?
であれば、xmlが書くけど、こんな感じでlayout_weightをしてすれば大丈夫かも
<LinearLayout>
<LinearLayout>
<EditText />
</LinearLayout>
<LinearLayout android:layout_weight="1">
<ListView />
</LinearLayout>
<LinearLayout android:layout_weight="1">
<EditText />
</LinearLayout>
</LinearLayout>
>>265 下ってことじゃなくて完全に切り替えたい
特定のメニュー押したらListView全表示して、特定の操作したら元のEditTextに戻したい
>>266 子ActivityでListViewを表示としない理由を小一時間。
なんか理由があるんだろうけど、子Activityじゃダメな理由がほとんど思いつかない。
>>262 OSのバージョンに起因する問題だったらエミュレータでも出るんじゃないの?
Activityの画面に外部サブクラスからそのActivity上に描画させるにはどうしたらいいのかな? MainActivity.start()的な感じにスタートして、コールバックで毎回呼ばれる形 startの中で、Canvas.drawナニナニって感じに描画かけたいんだけど、表示されない サブクラスには一応VIEWをextendsしてる。 ググってみてもonDraw(Canvas c)と、これ自動的に常時表示させる?方法しか見当たらないorz このCanvas cに当たる部分をどうやって取得するのでしょうか?
質問させてください。 今、簡単なナビアプリを作ろうとしているのですが、 交通情報(渋滞や到着時間)の取得手段はありますか?
画面に縦に並べてedittext,listview,textviewが並んでいます。 edittextを選択してキーボードが出ると、textviewがソフトキーの高さだけ上に移動し、 listviewの表示される箇所が少なくなってしまいます。 textviewをソフトキーの下に表示してlistviewの狭くしないようにするにはどうすればいいでしょうか。
>>271 どのようにですか!?
加速度せんさ+距離で割り出しとか、そんなめんどうなこといらないですか?
上下左右のフリックを検出したいのですが 実機でonFlingの精度が悪すぎてうまく動きません 他に変わるタッチイベントはどれがいいのでしょうか?
MotionEventで、getXやGetYは問題ないんですが、 getSize()やGetHistorySize()がいつも0しか返ってきません。 エミュレータと、静電マルチ対応の中華Pad(2.2)で試していて、2.1-update1で作ってます。 イベントはこんな感じで拾えてます。 case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: l = event.getX(); m = event.getY(); n = event.getSize(); o = event.getHistorySize(); break; 表示はこんな感じ protected void onDraw(Canvas canvas){ Paint paint=new Paint(); canvas.drawText( "X:" + l + " Y:" + m + " S:" + n + " P:" + o, 3,100,paint); } nとpはいつも0.0です。 エミュも実機もまったく同じ。ハード依存が強いんでしょうか?
>>274 確かにそうですね。
今あるナビアプリは、やはりお金を払っているのでしょうか。
>>276 確かに変わってました!
興奮してすみません。
再度質問なんですが、無料で交通情報を取得する手段はないでしょうか?
ダイアログでPreferenceActivityみたいな設定画面を作りたいのですが、 どうやってやればよいでしょうか・・・
>>278 そりゃ各自動車メーカーが独自にそういうシステム作ってるわけで
無料で提供とかしないでしょ
>>277 です。
SBMの006SH借りてきてやってみたら、getSizeもgetPressureもそれっぽい値が取れました。
>>263 BOM
>>266 setVisibility()で表示/非表示の切り替えでいんじゃね?
>>269 描画はonDraw()内で行うもの。
start()で描画に必要な情報を設定して、onDraw()でその情報を元に描画するように作る。
SurfaceViewで背景色を canvas.drawColor(Color.BLACK); と設定してるのですが画像を指定することはできのでしょうか?
海外で無料で提供されてるということは、無料でできるはずなのに。 無料のものを有料で売るとか、どれだけ儲ければ満足なんでしょう。
開発用に実機買おうと思ってるんだけど、お薦め機種ってある?
>>289 ん?アプリの話じゃないの?
まあ、輸入制限かかってるんだったら
それを日本に持ち込むためにコストかかるんだし仕方ないんじゃ?
291 :
デフォルトの名無しさん :2011/07/14(木) 00:51:01.72
質問です! 加速度センサーのデータをボタンを押したら収集し、 もう一度ボタンを押したら、 収集をやめるといったぐあいにプログラムを書くとしたら、 どのように書けばいいでしょうか?
>>289 輸入制限ってどういうこと?
関税かかるだけでしょ?
アプリを公開して半月くらい経つんだけど、ダウンロード数もさることながら 有効なインストール数が50%を超えないって・・。 orz みなさんはどうでしょうか?
どんな内容のアプリ? うちも50%弱だな すぐ終わるミニゲータイプ(容量10Mbくらい)ならやむを得ないかも SDカードにも入れられてないって事か〜
有効なインストール数ってだんだん減ってくもんじゃないの 増えはしないでしょ 最初90%ぐらいあったけどいまじゃ30%切ってるよorz
俺も30%くらい ちなみに合計インストール数はアップデートの場合もカウントされるよね? きっちり作るより、アップデートを繰り返すほうがたくさん利用されている ようにみえるよな。 ゲームアプリ作ったけど、最初に考えていたこと全部実装してマーケット公開。 やることやって満足してるから全然アップデートしてない。
>>286 海外の交通情報を日本で見るのってそんなに需要があるのか!?
馬鹿は貧乏だからしょうがない
画面遷移で質問です。 A activity → activityGroup → B activity → C activity と遷移したい場合 とある条件で、B activity画面を表示せずにC activity を表示させたいです 現状、遷移はできますが、一瞬B activity が表示されてしまいます。 これって解決方法はありますか? activityGroup はsingleTaskとなっています。
表示しないなり飛ばすなり好きにすれば
>>286 渋滞情報の事だと思うけど、
・情報収集コスト
・情報の信頼性
・ビジネススコープの大小
を比較して考えれば判るだろ。って判らないから言ってるんだろうけどさ。
>>302 onCreateでC-activityに飛ばす。onStartでも大丈夫だったかも。
つまりは画面描画前に飛ばせば大丈夫。
>>297-299 レスサンクス。 有効インストール数って増えないんですか・・。
うちのもミニゲームなので、1回こっきりな感じでアンインストールされているんだろうな・・。
この間、アップデート公開した後、デバッグ(すぐクリア)状態でうpしてしまったことに気づいて、急いで修正した。 orz
そういうミスを回避するためにも、隠しコマンド→デバッグにした方がよさげ、と思ったけど、どうなんだろ。
306 :
デフォルトの名無しさん :2011/07/14(木) 16:52:56.33
iOSとくらべてandroidもっさりしすぎ 何が原因なのこれ?
特定の画像だけ回転させたいのですけど rotateだと全体が回転してしまいます どうすればいいのでしょうか?
iOSはもっさりなのをアニメーションで誤魔化してるだけ
自己解決しますた また戻せばおk
310 :
デフォルトの名無しさん :2011/07/14(木) 17:17:16.78
サンプルのgl2jniをコンパイルしてエミュレーター(2.2と3.0)で 動かしてもエラーがでて動かないんだけど、動かす方法ってありますか? 実機だと動きました。
302ですが C activity に遷移はさせるかは、B activity で分岐させなくてはいけないのです。加えてC activity からB activity に戻ることができます。 一瞬表示されるのはactivityGroup でsetContentしているからでした。 なんか縛りがおおくてムリゲーと思えてきたw
同じoverridePendingTransitionを書いてアニメを設定しても、 アニメするActivityとしないActivityがあります。 原因を調べたのですが、単純なだけに見つからず困っていたのですが するActivityとしないActivityの違いはタブを使用しているかどうかぐらいしか思いつきません。 タブを使用しているとアニメできないとか特別な設定がいるということはあるのでしょうか。
現在、アンテナのウィジェットを作成しているのですが、 Androidエミュレータにて、電波強度を変更する方法、 また、GSM→CDMADBMに変更する方法ってあるのでしょうか?
setAntiAliasをdrawBitmapにかけたいのですができません
仕事でJAVAソース読まなきゃいけなくなったついでに 趣味でアンドロイドやろうと思うんだけどお勧めの書籍とかありませんか><
>>310 無理
>>312 当たり前だけどTabActivity閉じるときにかかからない
タブの切替はViewの切替でしかない
RelativeLayoutで調べてみ
>>316 ついでとか片手間に、って程は楽じゃない。
で、持論は「本は相性がある」んで、立ち読みして良さそうなのを選ぶしか無い。
でもJavaが出来るとか出来ないとか書いてないんだな。どっちだ。
>>318 TableLayoutでもLinearLayoutでも普通にできる。
MerginとかPaddingとかを詰めるだけの問題だと思うが。
違ったっけか。
>>321 できるのはできるけど、面倒だぞ
RelativeLayoutの中にTableLayout突っ込むのが一番手っ取り早い気がする
>>320 インフラ屋なんで開発はC言語ぐらいしかわからないわ・・・
とりあえず本屋いって探してみる
324 :
318 :2011/07/14(木) 22:21:08.94
>>323 オブジェクト指向言語を知らないならかなり大変だぞ。
仕事のためにもJava言語そのものの勉強もしたほうがいい。
C言語的にソースを読もうとすると、mainから普通に辿ると思うが、
Javaでそのつもりでやると読み始める位置が分からんし、
読み始めても、何時まで経っても読み終わらん。
逆引きの4200円のほうがよさそうだった 重いし分厚いから持ち歩き大変だけど。
327 :
デフォルトの名無しさん :2011/07/14(木) 22:42:05.97
>>326 それ使ってるけど、ある程度自分で分かってる人じゃないと細かい説明が載ってないよ。
>>327 サンプル付いてるんだから色々書き換えてためせばいいじゃない
質問があります (アホな質問だと思いますがすいません) CodeZineってサイトのBizCardというプログラムを勉強中なんですが、 アプリを起動時にListActivityが呼ばれますが、 何故、ListActivityが最初に呼ばれるのか分からないのです。 setContentViewでmainをセットしているから?でしょうか? それとも、最初にListActivityが呼ばれているのではなくて、 別のクラスが呼んでるんでしょうか? その場合、どのクラス一番最初にListActivityを呼んでいるのでしょうか? 本とかでは、最初に呼ばれるのはmainクラスか、 今回の例でいけばBizCardクラスだと思っているのですが… 間違っているでしょうか?
マニフェストファイルに定義してるからでそ それよりもkeyupやKeydown がきかないのは何故じゃ? ハード的に制御してるのかしら
>>329 ユーザーが(多分)ランチャーからListActivityのアイコンをタップしたから。
一般的にアプリのリストと認識されているものは実際にはActivityのリストで、ユーザーがその中からBizCardのListActivityを選択したからそのListActivityが呼ばれた。
どのActivityがランチャーにリストアップされるかはAndroidManifest.xmlで定義したインテントフィルターで決まる。
>>329 331さんの説明がほぼ正しいと思うけど理解できるかどうか。
androidmanifest.xmlにactivity一式を記述したと思うけど、そこにLAUNCHER云々ってのがあったはず。
それを定義したactivityはそのアプリ起動用としてランチャーにアイコンが表示される。
もし複数のactivityにLAUNCHERの定義があると複数アイコンが出現することに。
で、アイコンをタップしてアプリを起動すると、それにひもづいたActivityを表示しようとする。
ただ、最初に起動されるのは何かって話だと、一般的に言えばApplicationを継承した、
これまたmanifestに記述したクラスのインスタンスが先になる。その後にActivity。
じゃ、誰がこれらを呼び出しているかと言えばフレームワーク側の処理。よくわからなくても大丈夫。
アプリのプロセスを起動したら該当するApplicationクラスのonCreate()を呼ぶ。
で、色々な処理が終わって画面を表示する際に該当するActivityのonCreate()を呼ぶ。
そんな感じになってる。
333 :
デフォルトの名無しさん :2011/07/15(金) 04:30:07.10
>>330 ありがとうございます。
AndroidManifest.xmlですね
>>331 ありがとうございます。
なるほど、実際の表示で言うと
アプリ一覧は複数のActivityをGridViewで表示したみたいなものなんですね。
>>332 ありがとうございます。
<category android:name="android.intent.category.LAUNCHER" />
これがListActivityを最初に呼び出す為の一行ということですね。
今学習中のBizCardのAndroidManifest.xmlは、
クラス定義のところでご丁寧にすべてのクラスに<intent-filter> 〜 </intent-filter>が設定してあり、
(使用するクラスをAndroidManifest.xmlで定義しないといけないのは分かります。)
ListActivityの<activity> 〜 </activity>のところだけに、
<category android:name="android.intent.category.LAUNCHER" />
この1文がありました。
ということは、当然、作ってる中途の段階で違うactivityを表示させたい場合は、
この1文の位置を違うクラスの定義の、
ご丁寧に書かれている<intent-filter> 〜 </intent-filter>に移動させれば、
初回起動画面を変更するということができる、ということですね。
(<intent-filter> 〜 </intent-filter>がすべてのクラスで書いてあるので、
予め起動時に、エミュレータ側で起動クラスを指定してあげればすむことなんでしょうけど。。。)
本当にありがとうございました。
疑問は解決しました。さらに精進します。
335 :
165 :2011/07/15(金) 08:27:47.99
>166, 167 ありがとうございます。 >HandlerThreadをつくっておいて、そこから実際に処理するスレッドを起動させる。 は実装できたのですが、 BはonResumeでHandlerThreadに自分のHandlerを渡す。onPauseでそのHandlerを解除する。 HandlerThreadは、起動したスレッド処理の終了を検知したらBが登録したHandlerがあればそこに通知。 Bは渡したHandlerからの通知で結果を表示。 をどのようにしたらよいかわかりません。 もう少しヒントをいただけますでしょうか。
337 :
デフォルトの名無しさん :2011/07/15(金) 11:57:41.33
Google Chart APIを使用してグラフを作るアプリを作成していましたが、ブラウザに表示させたグラフが保存できません……
PCだと保存できるのにAndroidで表示するとブラウザが落ちたりダウンロードできなかったり……
なんとか保存する方法はないでしょうか?
今のところ
・ブラウザから保存
・HttpGetを使う
など試しましたがどちらも駄目でした……。
一応グラフのURLも乗せておきます。
http://chart.apis.google.com/chart?chs=300x300&chd=t:10,15,4,60,45|30,23,73,24,87&cht=lc&chco=a30000,4e00e8,550055&chxt=x,y&chxr=0,0,200|1,0,200&chxp=0,0,20,40,60,80,100,120,140,160,180,200|1,0,20,40,60,80,100,120,140,160,180,200
338 :
337 :2011/07/15(金) 14:12:05.64
すみません、解決いたしました。 URLをエンコードしたらできました。
なるほどAndroidのURLにパイプを含んでるとトラブルの元という訳?
LinkMovementMethod 使うと onItemClick が発生しなくなってしまうのですが いい回避方法があったら教えてください。
ListActivityを継承して private String[] mStrings = { "a", "b", "c", "d", …… }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings); setListAdapter(adapter); これだとmStringsの要素数分表示されるけど 初期表示件数をその内の10件だけにして一番下にスクロールさせると追加で表示 ってな感じにするにはどうすればいいんでしょうか?
>>342 初めは10件しかデータは取らない、
一番下までスクロールしたら追加で読み込んで
Listに追加
表示時にすべてのデータを取得できているんだったら
10件だけ表示なんて意味が無いと思うんだがどうかね
>>342 今さらながらタイムラインかな。
mStringsをString[]じゃなくてArrayList<String>にしれ。
最後までスクロールしたのを検出するのってどうやるんだっけかな。
検出したらListにデータ追加してNotify送る。
このスレの前の方にヒント出てなかったか。
345 :
335 :2011/07/16(土) 02:00:31.52
>336 ありがとうございます。 思ったのですが、pause, resumeでは、 バックグランドでthreadを動かしつづけることはできないような、、、 一度とめて、再び復帰ということですよね? となると、自分がやりたいのは、前の画面に戻っても ずっと動かすことなので、やはりServiceを使うしかないのでしょうか?
>>343 >>344 レスありがとうございます
Twiterのタイムラインの取得のものを参考に勉強にしてるとこです
http://labs.techfirm.co.jp/android/cho/829 上記のサイトの一番下のソースコードpublic class MainActivity extends ListActivity
list2.add(list.get(i)); iは0〜9でまず10件表示
adapter = new TwitterAdapter(this, R.layout.twitter_row, list2);
setListAdapter(adapter);
最後までスクロールしたら list2.clear(); list2.add(list.get(i)); iは10〜19
adapterに次の10件分のlist2をaddするにはどう書けばいいんでしょうか
>>345 やはりな。読解力をもっとつけなきゃダメだろうな。
>BはonResumeでHandlerThreadに自分のHandlerを渡す。onPauseでそのHandlerを解除する。
>HandlerThreadは、起動したスレッド処理の終了を検知したらBが登録したHandlerがあればそこに通知。
>Bは渡したHandlerからの通知で結果を表示。
の原型がちゃんと記述されてるよ。
HandlerThreadをつくっておいて(379,675)、そこから実際に処理するスレッドを起動させる。(484,737)
BはonResumeでHandlerThreadに自分のHandlerを渡す(390)。onPauseでそのHandlerを解除する。 (441)
HandlerThreadは、起動したスレッド処理の終了を検知したらBが登録したHandlerがあればそこに通知。 (681)
Bは渡したHandlerからの通知で結果を表示。 (171)
またonResume時にスレッドの処理結果が出てればそれを表示しておく。
あのソースはandroidの縦横の向きが変わっても別スレッドでデータ取得しているのをちゃんと継続できるように
するソースだけど、今回は画面が遷移しても大丈夫なようにする点は異なってる。
>>349 どうせListViiewの各行のViewは画面から出て行くと再利用されるってことを知らずに
直接書き換えてるんじゃなんの
>>350 だな。
ダサいサイトのコピペで、getViewの引数にviewがあることに気づかない。
だから最初からCursorAdapter使えと。
>>350 レスありがとうございます!
再利用させない方法とかありませんか?
scrollingCacheが怪しいと思ったのですが変更後、特に変わらなかったです;ω;
>>352 再利用するのがListViewの動作
させないんだったらScrollView使え
AdapterのgetViewでセットするようにしておいて再描画させる
>>349 根本的に見直す必要あり。DB使わない方法はいばらの道
BufferedReaderでStringの変数を読み込んだら日本語だけ文字化けしてしまうのですが、 どうすれば文字化けしないようにできますか。
docomoのXperia AcroをPCに認識させようとしてますが、 >adb devices で List of devices attached となり端末名が表示されない(認識されない)でおまってます。 ドライバも以前のXperiaのCDBrowserフォルダ自体がなく見当たりません。 どなたかAcroをPCに認識させることができた方いらっしゃいますか?どこが悪いのでしょう?
359 :
358 :2011/07/16(土) 21:30:18.06
すまん。いろいろいじってたらできた。 ただ、「USBデバッグが接続されました」っていうのがすぐに消えてしまっていた。
360 :
デフォルトの名無しさん :2011/07/16(土) 23:34:01.85
sdカードにtxtファイルを保存したいのですが、 ファイルが作成されません! マニフェストのxmlにも必要事項は記載しています! コードは以下です!(もちろん実機でプログラムを動かしてます) 実機のsdカードのアクセス権限とかの問題ですかね? @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } private void save() throws IOException{ String fileName = Environment.getExternalStorageDirectory() + "/sample.txt"; File file = new File(fileName); file.getParentFile().mkdir(); FileOutputStream fos = new FileOutputStream(file, true); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); BufferedWriter bw = new BufferedWriter(osw); bw.write("ファイル書き込みテスト"); bw.flush(); bw.close(); }
>>361 エスパーするとhardware09.jarいれてないかlibraryとして登録してない。
364 :
361 :2011/07/17(日) 00:16:45.51
ビルドパスにhardware09.jarは登録してます。 エラーは「Conversion to Dalvik format failed with error 1」と出ます。
>>360 例外発生してないかチェック。
あと、mkdir()してる意味がわからん
>>360 まずコンパイル通ってるのか疑問なんだが。
Environment.getExternalStorageDirectory()ってStringじゃなくてFileを返すみたいだぞ。
String fileName = Environment.getExternalStorageDirectory().getPath() + "/hoge/sample.txt";
とかで試してみそ。
あと、もちろんsave()はどっかから呼んでるんだよね???
>>364 つかさ、君らエスパーのテストをしてるのかよ。
最初からそういう情報出せや。
368 :
デフォルトの名無しさん :2011/07/17(日) 00:20:33.94
>>362 パーミッションの確認の仕方がわからないのですが、
DDMSで見た感じd---rwxr-xとなっているみたいです!
というか、AndroidManifest.xmlに
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
を追記する以外になにか必要なのですか?
>>364 アホさ加減に呆れたついでに答えるけどさ、
そのエラー文字列まんまgoogleで検索しろ。
一番上の候補に答えが全部書いてある。
370 :
デフォルトの名無しさん :2011/07/17(日) 00:26:11.15
>>362 すいません!なんかできました!
5時間ぐらいできなかったのですが、、、、
結局なにが問題だったかは不明のままでした!
>>369 いやだからさ
エラーは検索して解決できなかったから他の報告がないか聞いてんだよw
>>371 > エラーは検索して解決できなかったから他の報告がないか聞いてんだよw
いや、だからさ、そういう事をなんでわざわざエスパーさせるのさ。最初にそう書けよ。
ちなみに hardware09.jar はどっからダウンロードしたんだ?
無理やりテキストエディタで開くと中身は HTML だったりしないか?
俺が質問してやってんだから答えろよ
Androidを勉強する際にこれだけは買っとけって本はないか? 今の技量は簡単なトランプゲーム程度。
>>374 この手の話題は定期的に出るな。
JAVAの知識あるならXMLでのレイアウト作成や
Eclipse以外の開発環境まわりについて詳しく載ってるのをオススメする。
あとは実際に内容見て複数買ったほうがいいと思う。
ソースは俺。
まあ、大概はググれば問題解決するけど。
Androidで大規模開発してる人とかっている? 複数人でひとつのアプリ作ったり、リソースの画像とか文字列がすんげぇ量になるようなやつ。 そういう時ってやっぱプロジェクト分割とかして参照とかってしてる?
ありがとう。 数冊買って色々試してみるよ。 過去スレも見直してみる。
>>376 担当者毎に開発範囲の切り分けが明確になってないのでは?
xmlレイアウトをいかしてその一部に グラフを描きたいのですが、myviewすると上書きされてしまいます よい方法は無いでしょうか?
>>372 中身を開くとクラスファイルがみえるよ。破損はしてないみたい。
googlemap apiを利用するプログラムで サーチボックスで検索し、その結果をインテントで受け取り その結果をレイヤーに表示してますが、あれはどういう風に処理してますか? Geocoderに投げて結果を受け取り座標を取得して描画させてるのでしょうか。 現在地を取得してその近くにあるコンビニをレイヤー表示させてる あれです
エミュを起動させる際にScale display to real sizeを指定してやると エミュの画面がまともに表示されなくなるんだけど どこに原因があるんだろう? Scaleを指定しなければ異常ないんだけど。 Ubuntu11.04+Indigo+ADT12+SunJava1.6.0_26です。
384 :
デフォルトの名無しさん :2011/07/17(日) 15:46:24.06
androidに搭載された加速度センサーの取得値範囲って設定できますか? 20m/s^2ぐらいだと物足りなくて、、、
385 :
デフォルトの名無しさん :2011/07/17(日) 16:16:58.22
結局のところ、NDKでGLとかでゲーム作ろうとするときに C言語側をステップ実行やらする方法ってないの? いろいろググってもなんかないんだけど・・。
つ gdb
387 :
デフォルトの名無しさん :2011/07/17(日) 17:01:34.53
gdbでjniの紹介してるページとかない? いまいちいいのがなんですよねえ。 コンソールアプリとかのはヒットするけど、 そうではなく、jniなのか、nativeActivityな事例のが みたい。
ヒープが16MBってきつすぎるよね。 NDKつかってOpenGL ESのアプリをiOSから移植するにしても、相当厳しく無いか?
>>388 最近の端末は解像度上がった分増えてて24か32だぞ
>>388 どこから使うのが16MBまでなのか落ち着いて確認してみろ
NDK48
393 :
デフォルトの名無しさん :2011/07/17(日) 21:36:56.47
rootアプリであった、常に画面の最前面に常駐する仮想ボタンの仕組みがわからん是よ
>>376 ソース管理なリポジトリに突っこんで各自分業なんじゃないの、ふつう
>>394 キーコード送るのにRootが必要なだけで
UI部分はRoot無しでも出来るぞ
>>396 マジすか。
実装方法が全く想像できぬ。
出来ればググるキーワード教えてください
タッチ座標の取得をテストしていたのですが onTouchEventでevent.getX()、event.getY()で取得した値が端末の画面サイズと異なっています。 Xperia、Xperia arcの2機種でテストしましたが どちらも画面解像度が854x480なのにタッチで取得した座標が最大でも568x318になっているようです レイアウトを見てみるとLinearLayoutはwidthもheightもfill_parentとなっているのですが タッチ座標の取得にはほかに何か設定が必要でしょうか?
>>398 Viewのサイズ取得した?
その値よりも大きいのか?
401 :
398 :2011/07/18(月) 17:07:44.35
>>399 、
>>400 速い反応ありがとう
Viewのサイズについて勉強不足でした。
レイアウトだけで勝手に画面に合わせてくれるわけじゃないんですね。
>>398 いや、単位がpxって訳じゃないんだと思うんだが。dipじゃないかい?
Xperiaとかだとdensityが1.5だからちょうど全画面取得できてる気がする。
403 :
398 :2011/07/18(月) 18:08:36.14
>>402 なるほど、どうやら単位から間違えていたようです。
調べるとなかなかめんどくさいですね。
画面いっぱいまでタッチ自体は反応しているのに画面解像度に合ってない。という疑問でしたが、
密度についてまったく知りませんでした。
表示はとりあえず放置して動作だけ優先して勉強していたので、レイアウト関係は勉強不足でした。
>>398 maniにlargescreenとかanydensityを設定すると
854x480で取れたと思った。
405 :
398 :2011/07/18(月) 19:04:14.00
>>404 ありがとうございます
ばっちり求めていた結果が得られました。
SDKのダウンロードが半日かかっても終わらないんだが 何これ?VistaかVistaが悪いのか?
407 :
デフォルトの名無しさん :2011/07/18(月) 19:50:06.50
プログラムじゃないんだけど。 Android開発に関係するTweetをたくさんしてくれる人知らない? Scalaの@kmizuさんみたいな。
409 :
デフォルトの名無しさん :2011/07/18(月) 20:11:38.67
そうw
>>406 お前の環境が悪い。
悪いのは、お前自身かも知れん。
412 :
デフォルトの名無しさん :2011/07/18(月) 21:50:16.81
Eclipse 上の二つのプロジェクトを一つのapkにまとめるにはどうしたらいいんでしょうか?
限定地域内での利用を想定した地図アプリを考えてます。 PC版GoogleMapではinfowindow内に写真掲載がされてますが、 Androidでも似たようにinfowindowに画像情報を追加することは可能なのでしょうか
>>407 今すぐフォローすべき〜というのがあるけど
教えて下さい。 昨日、android marketに初アプリをリリースしました。しかし、 このアプリケーションは、アプリケーションのマニフェストで定義されているように、これらの機能を備えた端末でのみ使用できます。 画面レイアウト: SMALL NORMAL LARGE XLARGE 必要な端末の機能 android.service.wallpaper android.hardwaretouchscreen このアプリケーションは 0 台以上の端末でご利用いただけます。 となってしまっていて、マーケットに出て来ません。 ググってみてマニフェストをいじれば治るかもと情報があったので、 android.hardware.touchscreenは外しましたが変わらず対応0台のままです。 何がいけないのでしょうか?
>>416 有名人ほどイベントで話すかわりにAndroid関係のツイート率が低いんだよな
イベントまめに参加してる人は、告知見られるだけでも意味があるけど
そうでない人にとっては微妙な人が多い
419 :
sage :2011/07/19(火) 08:50:46.70
>>416 ざっと見たんだけど、AndroidのTweetがそれほど多くないんだよね。
数日に1度って人がほとんど。
Tipsとかをたくさん呟いてくれる人がいないかなー
>>418 あーやっぱそうなのか。意外と見つからないのよね。
ググるとTwitterアプリばかりひっかかるしw
悪い意味で話題のリバースエンジニアリングだけど何か対策してる? 難読化する以外に何か無い?
>>420 よく話題になるけど、そもそもやりたいのは
コードの難読化じゃなくてデータ(鍵など)の難読化である、ってことで完了してる。
所詮いたちごっこでしかない。
オンライン認証最強
難読化しても破られるってのはWindowsアプリでも変わらんわけで そこはもうローカルにあるものはある程度割り切るしかないよ オンライン認証最強というか最終的にはオンライン認証しかないけど 認証部分を潰されたらどうしようもないよねとかはこれも割り切りしかない DRM的なものを作る時は鍵の保管が問題だよね
425 :
デフォルトの名無しさん :2011/07/19(火) 10:10:13.43
>>424 Javaよりはネイティブコードの方がより難読には出来るね
ただ本質的にはローカルで実行しているものは難読化しようが何だろうが必ず破れるので
ローカルでの対策はどう転んでも気休めの域は出ないということは分かっておかないといけない
半分以上趣味でやってて無制限に時間を使える解析者 仕事でアプリを書いて有限の時間しか使えないプログラマ いたちごっこでどちらが有利かは自明 2chの荒らし対策よりまだ分が悪い
たいしたコードかいてないくせに隠そうとするひきこもり
このスレにいるのが個人開発者ばかりだと思ってるのか
あほ会社は大変だな。。
これも難読化の話題が出る度に同じ流れになるが、 仕事でアプリを書く身としてはコンテンツ権利者の要求を無視する訳にはいかん。 ここにいるのはエンジニアであって経営者じゃない。
>>428 だから何?人がどうしようと勝ってだろ
おまえに関係あんのか?
ひきこもりってガード固いよねw
先達の意見を仰ごうとしただけなのに 煽りあいが始まる意味がわからないです。
>>434 まぁそれが2ch。
Unix板とは違うからね。
現在の時刻はTimeやCalendarなどのクラスを使用すれば取得できますが、 指定した時刻を加算した値の日付や時刻が容易に取り出せるようなものはないでしょうか。 単純に10秒後を取得したいのであれば現在の秒に加算すればいいですが、 日付をまたぐときになると2月末であればうるう年の計算などを行わなければなりません。 もしAndroid(JAVA)で用意されているなら使用したいのですがありますでしょうか?
>>436 普通に足し算すれば良いだけだけど?
1/32は2/1になるし
↑誰かすいとんしてくれ
スクリプトエンジンを組み込んでjavaじゃなくてスクリプト側からリソースを参照するにはどういうやり方がいいの?
どのリソースをどう参照したいか、どのくらい最近のOSで動かしたいかで全然違う話になる
>>442 特定の端末は想定してなくてver 2.1, 2.2, 2.3のOSでソースフォルダのres以下にあるrawやdrawableやvaluesフォルダ内にあるファイル。
サーフェースビューで背景を設定するとき デフォルトでは機種に合わせて拡大縮小してくれませんが 合わせる設定ってあるのでしょうか? また、できないときはどのくらいの大きさまで用意すればいいでしょうか 今のところFWVGA(854*480)でおkですかね?
WinampのSkinみたいに後から見た目だけ(リソース)追加して変える方法ってどんな方法が考えられます? リソースだけのライブラリ作ってとか?でもメニューで動的に切り替えたりしたい。
>>443 2.2以降ならBitmapクラスをネイティブから読み書きできる。
assets は一端ローカルにコピーするなど工夫が必要。
てーかゲームならデータは別途ダウンロードする体裁のほうが色々捗る
>>446 自前でレイアウトエンジンを組むか、WebViewでもつかっとけ。
動的にテーマ生成できりゃ良いんだけどね
>>448 WebViewかっ!
なるほど、それおもしろいですねっ
ありがとうございますっ
くそう他のスレに誤爆したじゃないか。 まあNDKコードからJNI経由でJavaのメソッドでもコンストラクタでも呼び出せるので、 リソースアクセスする部分だけJavaで書けば基本的に何でもできるだろう。
>>447 res/rawとassetを普通に使い分けてリソースIDが全く使えない場合はAssetManagerでとればいいわけか。
と書いて気づいたけどリソースIDが使える使えないに関わらず"file:///android_asset/[ファイル名]"か"android.resource://[パッケージ]/[ID]"形式のURLで統一できるのか。
えーと、道が開けてきた。ありがと。
やっぱFWVGA(854*480)の機種だと同じ画像の表示でもメモリ食うんですかね QVGAやWVGAはエラーがでないのに
>>398 public boolean onSingleTapConfirmed(MotionEvent e) {
mSingleTap = true;
if (mZoom) {
// zoomIn, zoomOutしていたら、処理をしない
mZoom = false;
} else {
GeoPoint gp = getGeoPointByPoint((int)e.getX(), (int)e.getY());
controller.setCenter(gp);
}
return false;
}
これだけでacroでもよゆうでとれてるけどなー
dpかpxかは <supports-screens android:anyDensity=["true" | "false"] /> で変わる。 コードだけ出しても方手落ち。
コピペに突っ込むのもあれなんだけどさ >レンタル自習室&シェアオフィスで収入を得ながらそこで開発する これで収入得られるなら開発なんかしないで、格安オフィスとやらを量産すればいいのにね
417です。いまだにマーケットに表示されずに困っています。 何度も試行錯誤し、AndroidManifestの android.service.wallpaperをfalseにして supports-screensを全てtrueにしたら対応端末が467台になりました。 WEBのマーケットからダウンロードも出来るようになりました。 しかし、携帯端末からマーケットで検索しても全く出て来ません。 ・・・why!? WEBとmobileでフィルタリングの仕方に違いがあるのでしょうか? それとも全く別の原因が・・・?
このエラーはなんでしょうか? Failed to find provider info for android server checkin
Preferenceについて質問です。 ListPreferenceを使っているのですが、初期値を設定していない場合 インストール後の初回起動のみ、何も設定されていない状態で起動してしまいます。 dconfig.xml android:entryValues="@array/entryvalues" android:entries="@array/entries" そこで初期値をセットするであろう android:defaultValue="@array/entryvalues"をセットしたのですが、初期値が選択されておりません。 array.xml <string-array name = "entryvalues"> <item>1<item> <item>2<item> <string-array name = "entries"> <item>1つ<item> <item>2つ<item> 初期値をセットするのに足りないものはなんでしょうか?
愛が足りません
>>460 初期値なんだから“1“ or “2“を設定するんでしょ
463 :
460 :2011/07/20(水) 13:10:58.11
>>461 愛があっても、それを無視してユーザーを批判する作者もいr(ry
>>462 なるほど、これ直打ちなんですね…
確かに数値をitemに設定している値にしたら
アプリ削除→再インストールの際にListがチェックしてるデフォルトポイントが変わりました
default 3、 → 起動 3のとこにチェック
有難う御座いました
でもこれ、マジックナンバーになってて微妙ですね(´・ω・`)
覗き見防止みたいのを作りたくてなんとかサービスから透過したViewを書いて 下にある画面を操作出来るところまでは行ったんですが 通知領域を透過Viewで塗りつぶすことが出来ません。。 ScreenFilterというアプリでは出来ているので出来ると思うんだけど…。 もしこうすればいいんじゃないか?ってのがあったら教えてください。
>>463 デフォルト値にも適当な名前を付けてxmlで定義しておけばいいのでは?
>>466 成程、出来るんですかー
<int val = 3 >ってやったらERRORだった・・・
そういえば、@entryvalueってstring-arrayだったんで
integer-arrayに変更してみたけどやっぱり、デフォルトとして読み取らない
<integer-array name="defaultVal">
<item>3</item>
</integer-array>
構造部分は
Default value [@array/defaultVal] [参照]
(´・ω・`)
>>467 候補が文字列の配列なんだから
その内でデフォルトとする値は
文字列にならなきゃおかしいだろ
<string name=“defaultVal“>3</string>
>>465 それがまったくサンプルみたいなのが無いんだorz
どうやってやってるんだろう。。
>>464 ScreenFilterというアプリでは出来ている
これをぱくれば良い
Android.mk を解説している書籍、WEBサイトはないでしょうか。android sdk に付属しているドキュメントファイルが全てでしょうか。
>>470 そんなニッチなサンプルは無いだろ・・・
typeをTYPE_SYSTEM_OVERLAYにすれば良い
Permissionも必要だからちゃんと追加すること
typeやflagで色々動作変わるから一通り確認したほうが良い
エミュと実機を両方つないだまま LogCatの出力をeclipse内で切り替える方法ってありますか?
>>476 大半はエミュで、時間の計測とかだけ実機で
その際エミュ終了させなきゃならないと、エミュ再起動させなきゃならない
エミュの起動かったりぃ
>>477 ログを削除し、デバッグ先を変更すればいい。
エミュレータはそのまま放置。
(エミュレータと実機)同時にデバッグしたいとか言い出すのかと思ったw
ログ削除しなくてもデバイス選択すればそっちのログだけ表示される
>>478 >ログを削除し、デバッグ先を変更
これってどうやるの?
実機つないで実効デバイスを実機にしただけとは違うの?
それだとエミュを終了させるまでLogcatは真っ白なんだけど・・
VistaでもUbuntuでもダメだったしHeliosでもIndigoでも・・・
>>479 そこまで気にした事が無かったから、一応ね。
>>480 > 実機つないで実効デバイスを実機にしただけとは違うの?
そうだよ。
> それだとエミュを終了させるまでLogcatは真っ白なんだけど・・
> VistaでもUbuntuでもダメだったしHeliosでもIndigoでも・・・
Device はハイライト表示になってる?
>>481 >Device はハイライト表示になってる?
え??何それ?どこ?
つかみんな意識しなくても普通に切り替えられてんの??
なんかオレ根本的に間違ってる?
つか、もしかして実機の機種とかによったりする?
galaxy sなんだけど
>>482 DDMSのパースペクティブのDevicesのビュー
表示されないようだったらadb resetか何かをクリック
>>482 まず、落ち着けw
・Device一覧に実機は表示されてる?
DDMS や adb devices(だったかな)で確認してくれ。
・実機本体設定にて、不明な提供元の設定はちゃんとされてる?
・アプリ(AndroidManifest.xml)で、デバッグ項目にチェックした?
布団中だからうろ覚えの上、思い付く所を書き出した。
>>480 eclipseのddmsで、見たい方の端末をクリックすると切り替えられない?
もそういえばおれ実機がddmsに出ないんだよな。 手持ちの本だとUSBドライバを一回削除して、android-SDKに入ってる google製USBドライバを導入すれば、運がよければ実機デバッグできる と書いてあった。
>>486 出ないならデバッガーからbreak pointとか置けないな。
まず、端末の認識からだな。
これはググれば山程出て来る。
488 :
:496 :2011/07/21(木) 01:00:58.86
おっと、念のため断っとくけど俺は:480とは別人です。
ちなみに実機は何よ。 それと、ちょっと496に期待してみる。
新しいMacBook Air でeclipseとエミュはサクサクに動きますか? というかノートに入れて外で開発してみたいんだか Windowsならどの程度のノートならいける?
ちょっと質問なのですが、ブロードキャストレシーバを使って ケータイが充電中状態になる(充電器に接続された)時、 最大で数分かかる処理(SDカードのバックアップ)を走らせ ようとしています。 この場合の理想的な方法として、 @ブロードキャストレシーバから重い処理を実行するService を起動。 Aブロードキャストレシーバから新しいスレッドを起動し、この スレッドに重い処理を実行させる。 BブロードキャストレシーバのonReceiveメソッドに数分かかる 処理を直接実行させる。 Bはダメのような気がしますが@とAはどっちが良いですか? バックアップ処理はWiFiでPCに向かってファイルを送信する ため、ある程度切りがいいところ(各ファイルの送信直前)で 中断可能です。
492 :
977 :2011/07/21(木) 02:12:14.43
ブロードキャスト レシーバのライフサイクルでぐぐれば どれしか選べないかわかるだろう。
>>492 うぅ〜む、サービスを起動しないと独立したスレッドだけだと親になる
プロセスが消えて処理が中断されるという理解でいいですか?
Bだと他にも充電器に刺さったときの処理を実装するレシーバが居た
場合に、SDカードのバックアップが終わるまでそれらが待たされる
ように思うので。
494 :
774 :2011/07/21(木) 02:22:10.60
なんだかんだとAndroidアプリをちゃんとつくろうとすると、 色々な実装をしなきゃならないんだよな。いわゆる無限地獄というか。
>>496 少ないリソースで動かすための制約とかあるからな。
でもiPhoneと違ってC知らなくても書けるし、Eclipseが快適に
動くマシンがあれば開発できる。
あまり大規模なソフトを動かせない分、比較的小さなプログラム
が脚光を浴びやすいかもしれない。
例えば充電中に限ってBluetoothをONにするアプリ、50円とか。
ひょっとしてコレが1000本売れたら5万円。
>>494 ぶっちゃけ、iPhoneレベルで良い、なら考えることはあんまりないぞ
>>482 デバイスタブを表示状態にしてないだけなんじゃないかとエスパー。
表示しててもなぜかたまに消えるんだよね。
>>486 最近はinfoとかいじらなくても実機メーカーのページ行くとドライバ配ってるよ。
galaxy sで照度センサー使いたくてサンプル書いてみたんだけと、値がうまくとれない。 マーケットにある照度をとるアプリ使ってみたけど同じように値がとれない。理由わかる人いますか。
499 :
デフォルトの名無しさん :2011/07/21(木) 05:39:39.11
入門書のソースをまんま書いたのにこんなエラーがでた。 No resource identifier found for attribute 'layput_marginButtom' in package 'android' ぐぐってみたら有効な識別子を使用してリソースの名前を変更し、インポートを再度試みます。 って出たんだけど、意味が分からないので教えてください。
縦、横の切り替えをする時に、onCreateせずにレイアウトだけ対応させたいと考えています。 調べたところ、AndroidManifestにandroid:configChanges="orientation"をつければ、 縦横切り替え時にonCreateしないということがわかり、 onConfigurationChangedにsetContentView(R.layout.main);とすれば良いようなのですが、 googlemapを使用しているせいか、 android.view.InflateException: Binary XML file line #52: Error inflating class <unknown> 上記のようなエラーが出てしまいます。 何か対処法はないでしょうか?ご教示下さい。
>>490 スタバでドヤ顔で開発するならMacBookAir一択
どうせ3.xやICSだとエミュじゃ重くて実用にならんのだし、エミュ動かすって条件は考えない方がいいのでは。
>>493 onReceiveでwakeLockを取得
サービスを起動
サービスでの処理が終了後wakeLockを開放
Bは他のReceiverが待たされるんじゃなく、
ANR発生するから論外
>>502 レスありがとうございます。
52行目からgooglemapのコードが始まり、その部分のコードを外すとエラーは出ません。
ちなみにエラーが出るのは縦横を切り替えた時です。
507 :
475 :2011/07/21(木) 10:02:48.55
みなさんありがとう やっとわかった・・ 普段JavaパースペクティブにLogcatビューを表示させて見てたので気がつかなかった DDMSパースペクティブにするかDevicesビューを表示させればよかったんだね わかって助かりましたw 低レベルな質問に付き合ってくれてありがとう
WVGAって480*800だよね 今300*800(100*100のパターンでわかりやすくしたもの)を背景画像にしてみたら どう見ても320*480 どういうこと?
android:anyDensityの説明を穴があくほど読め
>>490 2009年のc2dのMBPで開発してるけどそれなりに動くよ
新しいMBAはベンチマークが2010年のMBPより若干良い程度だったから、平気じゃないかね
caovas使ってxmlデザインを上書きしない方法は無いでしょうか?
>>511 誤字を除いても、何言ってるのかすら分からんです
canvasを使った後にその状態でドロップダウンやボタンを配置して置くことは出来るのでしょうか?
>>513 言ってることがよくわからないが
できる
>>514 それは一ヶ月も前の話だから多分違う
最近見てなかったけど確かに17日で止まってる
開くのに異様に時間かかったし何かおかしいのかも
昔は反映されるのが2日おきくらいだったけど
数ヶ月くらい前から毎日更新されるようになってた
>>513 もうちょっと分かるように説明を…
ImageViewのCanvasをいじって回転させるのとかは可能
>>513 canvasの上にボタン等を重ねて表示するってことかな?
ゲームとかならゲーム画面上にOKボタンを表示するみたいな?
FrameLayout使えば重ねることができる
>>516 マーケットアプリも更新されてるしその辺の関係なのかな
公開したばっかで合計インストール数だけ増えてくから不安になるわ
マーケットの統計が数日〜数週間遅れるなんて 日常茶飯事すぎてもはや気にしていない
>>515 ,517,518
ありがとうございます
具体的には、
画面の上部にドロップダウン、テキストボックス、データ取得するボタン
そのしたに、グラデーションをかけたグラフを表示したいです。
広告入れとくとリクエスト数が増えてるのがわかるから、 有効なインストール数も以前と同じくらいの割合で推移してるだろうと思ってる
ここゴミスレだな全然使えないわ
GUI なアプリを作るのは初めてなので見当違いな点があればお許しを。 例えば電卓のような、一画面に多数の(似た用途の)ボタンを配置した画面を持ったアプリを想定しています。 このとき、ボタンのイベントを取るため、listener を登録しなければいけないと思いますが、ボタンが複数あるときに 配列でサクッと1行で済ませることは出来るのでしょうか? 今は、ググっても初心者向けのいい例が見つからず、ボタンの数だけ listener を用意して、全部逐一 setOnClickListener() しているのですが。 以下のような感じで簡単にいかないのかな〜、と。 setOnClickListener(配列); listener(arg) { switch (arg) { case 1: 1 のときの処理; break; case 2: 2 のときの処理; break; :
>>526 配列に対して一気にリスナーを貼ることは出来ないが(配列廻して個別に貼れば良いだけだけど)
複数のビューに対して同じリスナーを貼る事は可能
リスナーのオーバーライドしたメソッドに渡されてくるビューが
クリックされたビューになるのでgetId()でビューのIDを取得して処理を振り分ければ良い
>>526 onClick(View v)みたいに引数でViewオブジェクトが来るので、そのIDをとれば?
@Override
public void onClick(View aV) {
int btnId = v.getId();
if ( btnId == R.id.btnStart ) {
/* 「スタート」ボタンの処理 */
}else if ( btnId == R.id.btnStop ) {
/* 「ストップ」ボタンの処理 */
}
}
529 :
526 :2011/07/22(金) 01:16:36.76
>>527-528 簡潔・明快な回答ありがとうございました。なるほどっ、リスナー登録は(くるくる回す工夫は出来ても)ボタンの数ぶんだけやる必要があるけど、
その中身(リスナー)を個別に分ける必要はなくて、ひとつだけ登録したリスナーの中で振り分ければよいということですね。
10キーを持ったアプリなので、少なくとも10キー部分はひとつのリスナーで済ませたいと考えていたので、教えてもらった方法で対応出来そうです。
例えば OK ボタンなど、処理(性格)が異なるボタンは別のリスナーを登録するといったことをすれば、判りやすそうですね。
参考になりました。重ねて感謝です。
いいってことよ
コンストラクタの中でgetWidth(),getHeight()が取得できないんですけどどうすればいいですか?
なんのコンストラクタよ。viewか?onSizeChangedとかでやったら
>>531 まだ表示されてないんだからサイズは取れない
534 :
531 :2011/07/22(金) 11:01:57.30
>>534 SurfaceViewを呼び出すActivityのonCreateで
WindowwManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display dp = wm.getDefaultDisplay();
dp.getWidth();
dp.getHeight();
これで取れる
保存領域のローカルの扱いがよくわかりません。 Androidアプリでのローカルというと、そのアプリケーションごとにローカルの保存領域があるのか、 それともAndroid共通のローカルの保存領域があるのでしょうか。 どちらにしても、それがSDカードに保存されていないのならば、通常はユーザーから見れないはずなので アプリケーション側で削除する処理を書かないとローカルのデータは半永久的に残ってしまうのでしょうか。
>>535 int width = dp.getWidth();
int height = dp.getHeight();
と書いて
この値をSurfaceViewView.javaに持っていって
holder.setFixedSize(width, height);
としたいのですか、クラス間の値の渡し方がわかりません><
Javaは初めてなんです><
540 :
531 :2011/07/22(金) 11:43:35.09
setContentView(new SurfaceViewView(this)); これでSurfaceViewView.javaを呼びだしてるのはわかるんですが 値は継続しないんですよね どんな書き方をするのでしょうか?
そのレベルから質問されると、完成までにすごい量の質問数になりそうだな。 まずJavaを勉強してからの方がいいんでない?
543 :
デフォルトの名無しさん :2011/07/22(金) 13:56:52.67
>>528 なんでswitch〜caseにしないかな?
544 :
デフォルトの名無しさん :2011/07/22(金) 13:59:15.25
マーケットの管理画面が新しくなったがアップデートしたアプリがマーケット側に反映されないorz 相変わらず糞システムだな アイポン開発に注力するわ
アップデートしたら反映に数時間-半日かかるのは前から マーケットへのアプリ登録が混雑してると遅くなる 3.2APIの後悔でアップデートしてるアプリが多いから。
タイトルバーの背景色に drawable の xmlを指定しているのですが、 この xml でテーマの値が使用できません。 なにかいい方法がありましたら教えてください。
SDカードの音声ファイルを読み込むにはどうすればいいんでしょうか。
>>536 エミュ起動してファイルエクスプローラ見ればわかるはず。
いくらググッても出てこないから聞いてんですけど馬鹿なの?
>>550 SDカードの音声ファイルを読み込む Android
↑でググる
>>550 「SDカード 音声ファイル 読み込み android」でググれ。
ってここまで言わないとだめなのか、ゆとりは
>>550 次の質問は
どうやって音声鳴らすんですか?
だろw
夏だなぁ
はい、次の質問どうぞ
皆さんjava歴何年ぐらいですか?
30年じゃ
は?俺っちは40年だけど
562 :
:528 :2011/07/22(金) 22:49:54.54
>>543 Eclipseの内蔵コンパイラが吐き出すswitchはJDK標準のjavacとちょっと違いが
あって、昔eclipseでコンパイルしたswitchが一部Javaランタイムで正しく動かない
(いきなりErrorで死ぬ)ことがあったんだ。
それ以来Javaでは絶対にswtchを使わなくなった。
それにEclipseの内蔵コンパイラは定数クラスの定数値をcaseラベルに書くと
コンパイルエラーになったりしなかったか?
あとはbreakを書き忘れて昔大混乱したことがあるから。
if文とfor文とwhile文以外の分岐/ループはほとんど使わないな。
Javaってまだできてから16〜17年くらいですけど? ちなみに俺は7年くらいかな。ほとんどJ2EEばっかり。 ちょっとswingもかじった。
Dalvikバイトコードとそのニーモニック表ってどこかにまとまってないかな?
>>562 最終的にはNetbeansでコンパイルして仕上げたほうがいいのだろうか?
しかし最初NetbeansだったものをEclipseに載せ替えて動かなかったが改造して動くようになって
久しぶりにNetbeansに載せかえたら今度はこっちが動かなくなってた。
また見なおさなくては。
と思ったら普通に動いたや
普通antでjavacじゃないの。Netbeansよくしらんけど
imagebuttonについての質問です 背景色に@nullを使用して透過させているのですが、 その場合setEnableをfalseにしても視覚的にはなにも変わらないので透過させてない時のようにグレーにする方法ありませんか? お願いします
>>569 背景色グレーにすりゃいいんじゃないの?
>>569 Selectorでdisabledの時の画像を設定
>>574 5.0だけど崩れたことないけど?
Google翻訳噛ませると崩れるけどね
この27時間の間にアプリリリース汁
android上でandroidアプリ開発したいんだけど どうすれば
>>578 androidにはjavacが入ってないみたいだから無理だろ。
androidで動くようにjavacを移植すればいいんじゃね
androidで開発とか想像したこともなかったけど、Eclipseが無かったら 俺に開発なんて無理だわ。。。
AndroidSDKもAndroid用は無いからねえ
キーボード付のハニカムならなんとか開発機として使い物になりそうな気もするが ストレージの容量とか考えてもネットブックとか用意するほうがマシと思える。
無理 コンパイルサーバーとか用意して 実行するところまではいけるだろうけど デバッグできないし デバッグ含めてまともに開発可能なのはjavascriptのみ
プログレスバーが消えるときにフェードアウトしたいのですがどうやればいいか教えてください。
クラウドのエクリプスでアンドロイド上で開発できるようになるとかならないとか
サーバでチェックする以外に 端末側の時刻不正操作(一週間進めるなど) を検出する方法があれば教えてください
時間が変更されたことは分かるが、それが不正かどうかは無理じゃね?
だよな 海外に行くときとか時間変更するし
593 :
デフォルトの名無しさん :2011/07/24(日) 17:38:36.19
AlertDialog の中に ListView 入れると、 Adapterの getView が何回も呼ばれちゃう。 ソース追ってみたけど、原因はよくわからない・・・ 例えばリストの中身10個とかなのに各5回で50回とか呼ばれる。 リスト自体は正常に表示されているから、問題ないんだけど、 なんだか気持ち悪い。 なんでなんだろう?
別スレッドでListViewの行のImageViewを更新したら、 その時にまたgetViewが呼ばれるみたい。 ネットワークの画像を取得しようとする処理で取得のキューに入っているのに、 キューに入れてしまっていて、 実際に取得できるまで、 半無限ループみたいになってるのかなぁ。
EditTextビューで文字列の幅がビューの幅を超えると勝手に折り返すのを止めさせる方法はありませんか? 改行はちゃんと改行させたいのですが。
>>594 UIコンポーネントをメインスレッド以外から更新るのはタブーの一つ
別スレッドでやるべきなのは画像データ読み終えた後にadapter.notifyDataSetChangedを呼ぶところまで
>>598 エラー出てないから表示更新処理自体はメインスレッドから呼ばれてると思われる
画像読み込み終わって表示更新したら全行表示しなおされるのでその分getViewも多く呼ばれる
getViewの中から画像を取得しにいくような時間のかかる処理を呼んでいないならそのままで問題ないと思うけど
601 :
デフォルトの名無しさん :2011/07/25(月) 08:12:53.52
>>595 >>598 >>599 レスサンクス。
やっぱりUI更新がトリガになってgetViewされての半無限ループがクサイですね・・・
不思議な話なんですが、
Activity.setContentView(listView); の時だと全く同じ処理なのに表示中の行しかgetViewされないんです。
AlertDialog.setView(listView); の時だけ、半無限ループになる・・・
Androidアプリで、TVのリモコンの代替となるものを作りたいのですが
調べてみると、やはり赤外線送受信するためのハードウェアが別途必要みたいですね。
ただ、Bluetoothを使い、電化製品にアクセスして使う分なら出来るようなのですが
http://www.youtube.com/watch?gl=JP&hl=ja&v=83vke6yI-cA この場合必要なものとしたら
・Android端末
・Bluetooth受信可能な端末
この2点でしょうか?
操作する場合、どういったAPI等を使うことになるんですかね?
例えばリモコンだとしたら、そのリモコンを販売してるメーカーのページを見にいって
プログラムが公開されて(普通されてないと思うんですが)いないと作れないものなのでしょうか?
603 :
601 :2011/07/25(月) 10:01:48.79
ローカルファイルがadbしか見れないってことは adbを使わないと削除も編集もできないから、ユーザーが勝手に消したり編集も出来ないってことでいいの? それとも、もっとユーザーにいじられないような領域はある?
>>605 エンドユーザがADB入れることに何の困難があるんだよ
あと、アンインストールしたら消える
>>604 おお、有難うございます。成程SHARPのですか
ということは、リファレンス(API)を見る限り、このSDKを使えるのはSHARPのみってことになりますよね
現在NEC製品を使っているのですが、仕様を見てみたところ
赤外線通信 ○(IrSimple?、IrSS?非対応)となっているので、IrSimpleなら使えるようです。
この場合、SDK使って手頃に作成するなら該当するSHARP製品を買うか、
NEC機種でやる場合なら、SHARPのSDK部分も含めて全自作になるのでしょうか?
>>606 たとえばフォントの色を赤で背景色を黒とかの共通の設定を持たせたい場合、
アプリ側で変更させたほうが安全でしょ?
直接編集されてでたらめな値にされて、色が変わらなくなったとか言われたくないじゃん
>>607 いや、赤外線通信用のデバイス(目玉)では、赤外線リモコンとして使えるような出力が出ない。
アプリ開発初心者です。 質問させてください。 part7の313の人と同じ現象になったんですが、これといった回答がなくて、続きが気になってます。 いくらググっても同じ現象が起きてる人がいないんですが、実は俺も同じことで悩まされてるって人いませんか? 機種はIS12SHです。 悩んでも仕方ないってことでonSizeChanged内でサイズがが0x40000000以上だったら0x40000000を引くようにしたんですが、何かしっくり来なくて。
androidをリモコンにしたら妖怪リモコン隠しに狙われるじゃないの
613 :
デフォルトの名無しさん :2011/07/25(月) 14:16:38.40
リスト表示をする際、ListViewとListActivityとあるようなのですが、 この2つのListViewの違いは、findViewByIdでインスタンスを取得する 必要がある・ない くらいのものでしょうか。 カスタマイズするときなどは、どちらも特に問題なく表示できるのでしょうか。
615 :
613 :2011/07/25(月) 16:14:15.25
>>614 レスありがとうございます。
特に違いはないんですね。
動作的にも、そんなに違いはないんですかね。
(不具合が出るとか、処理の制限など。。。)
616 :
デフォルトの名無しさん :2011/07/25(月) 16:16:27.70
>>616 画面サイズを正常に取得できるようになりました。
感動です。
ありがとうございました。
スピナーを4列表示してるのですが
背景表示の為
android:background="@drawable/wallpaper"
の一文を追加しただけで上詰めで4列あったのが
画面に等間隔に配置されてしまい困っております。
背景を表示しながらも上詰めできる方法があればご教授お願いいたします。
下記はソースになります。
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android "
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/wallpaper"
>
619 :
デフォルトの名無しさん :2011/07/25(月) 18:52:25.80
プログラムもjavaも全く知らずに5日間でAndroidアプリ を自由に作れるようになれますか?
1時間で作れるようになるよ
5日もかかってたら向いてないわ
誰か、VPNが接続状態か否かを取得する方法を教えてくれ・・・ 接続状態、trueかfalseだけでいいんだ・・・ 「VPNが接続されていない場合は接続しにいきます」じゃねぇよ、 そんな仕様聞いてねぇよチクショウ!
一年以上かかってる…。
何年たったかも分からない
>>622 アプリレベルの話でAndroid関係ないだろ
>>626 IVpnServiceとか見て「へっへっへ、そうかそういうことかよ」とか言っちゃう変態さん、
もとい凄腕のハカーがいないもんだろうか、という期待を込めて質問してみました。
VPN周りをいじっている人ってあまりいないんかね?
有料版と無料版があって、 class Global { public static final boolean TRIAL = true; } みたいにして切り替えてます。 で、マーケットにアップするときにパッケージを 別名にしなければならないんですが、異なるのは上記定数の値とパッケージ名だけなんです。 この場合、ソースを丸ごとコピーして別パッケージ名でAndroidManifest.xmlを作らなければならないんでしょか? それとも複数のAndroidManifest.xmlで同じソースを使いまわすことができますか?
そういえばapkファイルが複数うpできるようになったらしいけど
それと
>>628 みたいなことはできるのかな?
631 :
デフォルトの名無しさん :2011/07/26(火) 00:15:04.02
sdk level 9でjniで作成したアプリを登録しようとしてるのですが、 対応機種0台以上と出てしまいます。 なにか間違えてますかね・・ マニフェストとか調べましたが全然改善せずです。
入門書がいっぱいあってお薦めを教えてください またこれさえあれば大丈夫だというものがあればお願いします
>>618 backgroundも含めてレイアウト計算の対象になってしまってるから。
FrameLayoutで重ねろ。
>>629 有料と無料の切り替えには使えない。
機種のOSや解像度やスクリーンサイズで切り替えられる。
>>628 アプリのパッケージとActivityのパッケージは別に一緒じゃなくてもいいので、
R クラスのインポート文だけが異なるソースファイルがたくさんできることになる。
俺ならコピーして必要なとこだけ変更してから、Rクラスのimport文だけexcludeして比較できるようにしとくかな。
メイン機能を全てライブラリプロジェクトとして作成し、 AndroidManifest.xmlしかないプロジェクトを二つ作ってそっちで参照する トライアルかどうかはライブラリ内でアプリのパッケージ名見て判断
トライアル(無料)か有料かの違いなら (仕組みはしらないけど)アプリ内課金を利用することもできるんじゃないかな。 こうすれば、有料版のインストール数はユーザにわからない。 でも、有料版のライセンス管理ってどーするんだろ。
アプリ内課金って端末ごとだった気がする 複数端末に入れてる人とかインストールしなおす時とか払い直しになるんじゃない?
.soファイルの中身を見てみようと思ったのですが、objdumpでは逆コンパイルできませんでした 何かヒントをお願いします
>>636 おまいの知識は間違っている。
属性が2種類あるんだよ。複数購入できない奴はマーケットが購入状態を覚えていて、複数の端末に購入状態は引き継がれる。
>>632 そんなの無い
ちょっと突っ込んだ事しようとすると、店に並んでる入門書じゃとても足りない
>>638 そうだったのか、すまん
なら問題ないのか
アプリ内課金で有料版購入って どこだか忘れたけど特許持ってるから金払えとか 難癖つけてくる可能性があるんじゃないのかな よっぽど目立たないと大丈夫だと思うけど
arm-eabi-objdump
webviewで以下の文字列を読み込んでも左右の中央寄せは機能するのですが、上下の左右寄せが機能しません。 <html><head><title></title></head><body valign=\"bottom\" align=\"center\" >テスト</body></html>" cssも読み込んでいませんし、何か悪いのでしょうか。
HTMLの理解。 まずそのHTMLをファイルにして、PC上のSafariやchromeといったWebKit由来の ブラウザで表示させてみな。
>>644 それじゃどんなブラウザでも上下センタリングなんてしないよ
htmlとCSS勉強してきな
webviewで使うブラウザって標準のやつ? つーかもうHTML5で書いていいんだよな
>>642 アプリ内課金自体がOSの機能として組み込まれているもの
iOSではAppleがライセンス払ってるが
それを各アプリベンダーからも取ろうとしてる
Androidではどうなってるか調べてないけど…
>>639 そうですか
その中でもお薦めがあれば教えてください
>>650 はっきり言ってどれでも良い。
一冊最後まで走破すれば何かしら身についてるはず。
別にネットで公開されてる個人ブログのチュートリアルっぽい記事でも良いし。
本が好きってなら止めないけど。
>>631 私も同じ症状で悩まされました。私の場合はManifestで
android.hardware.touchscreenをfalse
(私のアプリは壁紙だったので)android.service.wallpaperもfalse
supports screensを追加してResizeableは空白で他は全てtrueで
指定したら対応端末が461台になりました。
そしてコピー防止をオフにしたらweb版のmarketに出てくるようになりました。
その時はmobile版のmarketには出てこなかったのですが、半日くらいたったら
mobile版にも出てくるようになりました。
・・・が、タイトルを完全一致させなければ、どんな検索をかけても
出てこないので、この方法は正解ではないんだと思います。何かわかったら
また報告します。
こういった事はアンドロイドでは可能でしょうか? WEBにアクセスして得た情報をテキスト形式のファイルで出力したいです。 やりたい事は IPでアクセス判断して、携帯とスマフォだけアクセスできるゲームサイトの 大量にあるURLを順番に打ってアクセスし、情報をテキストか何かで保存していきたいってだけなんだけど…。 使用理由は、自作ゲームまとめサイトに使用したい為です。 欲を言うなら、画像も保存して指定ファイル名(URLの語尾)にリネームしたいです(個人でのみ使用) 不安点はテキスト出力できたとして、どこに保存されるのか? スマフォは裏で稼動できるのは、画像保存と音楽のみと聞いたので、テキストファイルを操作するのは難しいのではないか ご指南お願いします
すいません。追記です プログラミングは.NETとPHP、JAVAを少しかじった程度にできます。
>>652 何らかの方法ででもマーケットで表示される設定は間違ってない
検索に引っかからないのはマーケットの検索がヘタレなせいで設定とは関係ない
アプリのタイトルが英語と日本語で違う場合 英語タイトルでマーケットで検索してもでてこなかったな(PC版で) 英語版に切り替えたらでてきた
>>655 今、ググってみたのですが655さんがおっしゃるようにmarketの検索エンジン
の精度の問題のようですね。検索に引っ掛かりそうな言葉を本文中に
増やす事で、ある程度は対応がとれるみたいなのでやってみます。
>>656 なるほど、そうなんですか。次のアプリはタイトルにも気をつけてリリース
してみます。
お2人ともありがとうございます。
>>653 androidは基本的にPCと同じことができるよ。もちろん本当に完全に同じことができるわけじゃないが、少なくとも
>>653 が心配してるような意味不明な制限は無い。
何ならサーバーアプリを作ることもできる。
通知バーにアイコンを登録するときに一番右に登録したいのですが、どうすればようでしょうか?
>>658 ありがとうございます
それを聞いて安心しました
勉強進めていけそうならアンドロイド購入を検討します
>>651 ありがとうございます
付け焼刃じゃ無理なんですね
音楽データのアルバムアート取得なんですが、 ContentResolverからidで探して受け取ったパスだと、 一度デフォルトの音楽再生アプリ等が生成したアルバムアートを 指定しているので、この生成を通さないと取得できません。 自分で生成する方法を教えてください。
>>659 whenの指定をminかMAXどっちかに指定
〜2.2と2.3〜で逆になるからOSのバージョン見て変えないといけない(どっちがどっちかはわすれた)
自作のAndroidアプリケーション(iPadでも良いのですが)内で電話番号を選択した場合に Skypeを起動し、指定した番号への通話を開始することは可能でしょうか?
>>666 Intentでできるんじゃないかな
ググッてご覧と
668 :
667 :2011/07/27(水) 09:42:38.05
今現在、FrameLayoutでカメラを作っているのですが | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | カメラ | |_______| となっています。 これを |ボ| ̄ ̄ ̄ ̄ ̄| |タ| カメラ | |ン|_____|  ̄ という形にしたいのですが、XMLでどういった処理にすればいいのでしょうか? 普通に、ボタンを追加した場合、カメラの上にボタンが追加されるだけであり ボタン部分のカメラ画像が隠れてしまいます。 イメージとしては、デフォルトでついてるカメラアプリの左右でメニューを開いたり 撮影ボタンを押す感じです。 Androidoプログラミングバイブルという本を読んで勉強してるのですが、メニューまでは書いておらず 参考になるサイト等もありましたらお願いします。
670 :
669 :2011/07/27(水) 11:29:29.98
イメージ2 撮影後の感じが、現状ボタンを上に追加しただけの場合 _ || ̄ ̄ ̄ ̄ ̄ ̄ ̄| || | ↑ このボタンで隠れてる部分も撮影されてしまう 有効範囲を、ボタンより右側にしたいといった感じです。
アンドロイドの画面って、別のActivityを同時に描画って出来る? 左側には2chブラウザ 右側にはWebブラウザみたいな感じに 同時に両方操作するような感じ
672 :
デフォルトの名無しさん :2011/07/27(水) 12:51:09.81
>>671 そういうレイアウトにすればいいんじゃね?
つ Fragment
674 :
671 :2011/07/27(水) 13:56:51.91
分かりました、頑張ってみます。 有難うございました。
アドバイスできないゴミがえらそうに居座ってるスレ
SQLiteDatabaseをPC用に移植したライブラリってないですかね?
>>676 PCのSQLiteってライブラリそのもので、静的にexeに組み込むんじゃないの?
スケジュール管理アプリの一部にGoogleMap等のインターネットを使用しない オフライン地図の機能を付けたいのですが、地図機能のライブラリってないでしょうか? できれば、目的地にマーカーを付けたり、ルート案内してくるようなものがいいです。
TV 番組表が取得できるapiってありますか?
ない
>>678 オフラインならそもそも地図データをどこから持って来るかが一番の問題だろ。どのモジュールが使えるかはそのデータのフォーマットによる。
682 :
679 :2011/07/27(水) 17:16:18.02
Androidアプリで 特定時間にあるのアプリを起動して 特定時間にそのアプリを終了させるということは可能でしょうか?
アプリで出力したファイルを、アプリがアンインストールされても残しておきたいんだけれど そんなことできる?
>>686 externalStorageに書いておけば、アプリの削除とは無関係に残るぜ。
>>687 レスサンクス
externalStorageってエミュレーターでやるとSDカードが出るんだけれど
SDカード刺してない端末ってどうなっちゃうの
SDカード指していないかどうかは判別できるから。 なので起動時や保存時にチェックすればいい。 あと、実際にSD刺してなくてもexternalStorage使えるGalaxyみたいな端末もある。
Galaxyは端末内部に外部ストレージが内蔵されてんだぜ。
内蔵されてても外部ストレージなのか 奥が深いな
外部ストレージが内蔵されているというよりは 内部メモリ内に外部ストレージがマウントされている
>>692 で外部ストレージが本体に内蔵されてるという事実は覆ったのかね
要するに内臓が腹から出ている人間みたいな状態ってことか。
いやどっちかいうたら外付けHDDをPCケース内に入れちゃう感じだろう
SD挿せばそいつも外部ストレージとして使えるけどね
論理ストレージと物理ストレージがごっちゃになってるから話が変に
698 :
774 :2011/07/28(木) 01:35:11.38
>>676 スタンドアロンをお望みなら pupsqlite とか。
すみません、 初めてWebView使ってみてるんですが、 現在、インターネットに接続できるかどうかを前もって調べるにはどうするんでしょうか?
ユーザに聞く。 「現在インターネットに繋がっていますか [はい] [いいえ]」
カメラで撮った画像を保存した後にギャラリーに登録するんですが、 その時ギャラリーで分類される名前がアプリのパッケージ名になるんですがこれどうやって変えればいいんですか?
>>702 適当な名前で先にディレクトリ作っておいて
その場所に、保存する処理みたいにすればよいのでは
むり
>>699 Reachability ってサンプルがあるよ。
>>705 だけど、ここは Android スレでしたね。失礼しました。
ウィンドウズフォンのアプリは何で作るの? 移植するなら早い方がいいわけだし
VSでC#
.NET Compact FrameworkはMIDPのCLDCとちがってずっと重いからWM6使ってたとき逃げたな。 端末のスペックが跳ね上がったから最近はまともにヌルヌルなんだろうか。
>>676 もともとSQLiteはandroid用に作られたものじゃないぞ。
LinuxでもWindowsでも動くし、PC版のFirefoxも履歴やらなにやらの管理に
SQLiteを使ってる。SONYのwalkman管理ソフトもデータはSQLite。
>>708 ソース忘れたけど、俺が読んだ記事だとSilverlightとVisual Basicって書いてあったみたいだ。
まあSilverlightは.NETベースだからC#も使えるんだろうが、Silverlightの.NETは機能縮小
版だよな。
拡大縮小にあわせて変化させたアイコンを予め登録しておく
?機能縮小版 ○Silverlight=javaFX Silverlightは.net上に構築されたリッチコンテンツプラットフォーム。 機能縮小版はcompact rameworkが該当してSilverlightはフルセットだろうとcompactだろうと動く。 たぶん仕様的にはXBOXの.netでも可能なんじゃないか?やらないだけで。
教えてください。 設定画面(PrefereceActivityを継承したクラス)でspinnerを使うことはかのうでしょうか? よろしくおねがいします。
FXcameraが1000万DLだって 作者は日本人だったんだな
androidってそこまで市場ある? i-phoneは抜いたけどDSよりも上かな?
>>717 DSはゲーム好きの子供中心だがandroidはケータイだ。どの世代でも
誰でも持っている装置の総売上中、50%近くがandroid。ゲーム機の実質
所有者数なんてあっという間に追い抜いてしまう。
>>716 広告で初任給(20万)程度の収入getするには5万〜20万DLくらいかな?
クリック率やアクティブユーザー数にもよるけど。
1000万DLだとウハウハだなたぶん。
721 :
デフォルトの名無しさん :2011/07/28(木) 22:41:19.31
合計インストール数: 11 有効なインストール数: 15 これって一体?
>>721 作者の動作確認用エミュレータとかが入ってんじゃないか?
公開した作者も利用者の1/5が自分自身だと寂しいだろうな。
計40万DLで月大体20万円かなー。アクティブ30万くらい。利用頻度とかユーザー層によるかな。
広告どれくらいの率で押すもんかねえ 自分でも押したことないのに
エロい広告だと押したくなる
>>721 合計インストール数の更新が結構な頻度で遅れてる
銀の皿の折込チラシだとポスティングの0.47%で高収益店扱い
ある機能を実装して!って言われたら、ネットで拾ったやり方を勉強して 作ることは出来るんだけど、ちょっとやり方が違ったりすると途端に詰まってしまう。 根本をみっちり、応用編もきちんと解説してくれてる本でこれいいよ!ってのないすか?
今のところクリック率は1%くらいかなー。
プログラミングも初めて、Androidも初めてですが、一応1つアプリを完成させました。 でも1つのクラスに全部のコードを書くのってよくないんですよね? オブジェクト指向?とやらで、クラスをいっぱい作ってそれを組み立てるみたいな、 それのやり方がいまいちわからず悩んでます。 サンプルコードじゃなく、それなりの機能を実装したアプリのサンプルってありませんか?
OpenGLでテクスチャはるとライティングがきかないみたいんなんだけど これは仕様?
>>730 抽象的な質問だったのにレスさんくす!
評価も高かったんで、早速ポチってみた。
>>731 SDKのサンプル全部読んで足りなかったら添付アプリのソースでも見ろ。
プログラムの本てコード書いてるマが書くもんじゃなくてコード書けない学者が書くもんだから基本的にそんな新人教育に使えそうな便利本はないよ。
>>731 全部インナークラスでいいじゃん。オブジェクト指向から何も外れてないぜ。
>>731 きちんと動けばいいんだよ。
どんなにきれいなコードでも、完成されて動かなければただのゴミだ。
やっていくうちに、ここを分けた方がコードがスッキリするとか、
分かるようになるから、そう思ったらクラス化なりしていけば
いんじゃね〜か。まあ、がんばれ。
俺も常に悩んでるな。 パラメータのクラス間の受け渡し方 リスナーをインナーにするか、別クラスにするか、imprementsするか ASyncTaskをインナーにするか、別クラスにするか ロジック部分を切り分けるか strings.xmlを何の単位で分けるか等々
strings.xmlを分けてもいいんだ、気づかなかった
リソースのファイル名に使える文字って制限きついよな 大文字くらいは使いたいんだけど・・・
>>734 ,737,738
ありがとうございます。
とりあえず何個もアプリ作って考えてみます。
質問失礼致します。 OpenGLで擬似2Dのような表示方法をしているのですが、 サスペンド・レジューム後、テクスチャが表示されなかったり、 透過されていた部分が透過されない状態になったりして困っております。 どなたかこの解決法をわかる方はいませんでしょうか?
ちなみにテクスチャを必要に応じて作成と解放を繰り返すにように作ってあるのが原因か、 サスペンド時に何もせずにレジューム後にテクスチャを作り直すと違う画像が表示される事があった為、 サスペンド時に一旦glDeleteTexturesで全てのテクスチャを解放し、 レジューム時に復帰フラグを立てテクスチャを作り直すという手順を踏んでみたのですが、うまくいきませんでした。
サスペンドするとVRAMぶっこわれっから、TEXTURE読み直しでおk。 プログラムの方が悪いんだと思うよ。
746 :
743 :2011/07/29(金) 18:11:24.05
返答ありがとうございます。 まだ解決には至れていませんが、もう少し原因を突き詰めていこうと思います。
>>744 サスペンド時にフラグ立てた方が良いような
748 :
743 :2011/07/29(金) 19:21:21.37
確かにそちらの方が安全ですね。フラグをサスペンドに持っていきます。
フラグ立てなくても、サスペンドしたことは分かると思うが
レイアウトウェイトの数字ってどうやって算出するんですか? なかなか思い通りの配置ができない。
そんなに難しいか? 出来ないことをやろうとしてるんじゃないの?
Layout_weightを適用したいwidthなりheightなりを0pxにすれば割合通りの大きさになる ここをfill_parentなんかにしておくと変なことになる
ちょっと質問が…。 ターゲットは1.6で、SDカード内にディレクトリを作成しようとしてるんだけど、 /sdcard/tempは作成されるのに/sdcard/HogeDir/tempは作成されないんす。 マニフェストにはandroid.permission.WRITE_EXTERNAL_STORAGEを設定してるし 原因が分からない。
755 :
753 :2011/07/30(土) 00:54:22.10
File dir = new File(Environment.getExternalStorageDirectory().toString() + "/" + HogeDir + "/"); if (!dir.exists()){ dir.mkdir(); } って感じでdir.mkdir()の後のDDMSで確認してもダメでした。 ただEnvironment.getExternalStorageDirectory().toString()でsdcard直下に + "/" + "temp"だと ちゃんと作成されます。
あとディレクトリ区切り文字は「"/"」じゃなくてFile.separatorが理想的。 FileクラスにはFile(File, String)なるコンストラクタもあるぞ。
>>756 うはっ!mkdirs()にしたら出来ました!!
うーむ知らないことばっかりだけど、こうやって一つ一つ覚えて
いつかは自分も回答する側に回りたいものです。。。
ありがとうございました。
聞きかじりなんだけど、iphoneもandroidもhtml5がアプリ作成ツールになるってホント?
質が悪過ぎ、酷いな。
html5はツールじゃない
tabまわりってサイアクやね いつまでたってもeclipseじゃまともに扱えないし
>>759 webビューにhtml5で作成したもんを表示するとかそういうことかな?
html5でもできるってだけでしょ
まさかTitaniumとかPhone Gapを知らないのか?
なにそれおいしいの?
javascriptベースのクロスプラットフォームな開発環境。内部的にはHTML5。iPhone,Android両方で動く
ネイティブアプリも作れるみたいだけど、デメリットは?
javascriptで開発しないといけないこと
うん、要らない。
デベロッパーコンソールの評価とコメントがいきなり減ったんだけど、 google側の問題?
コメ評価0件の俺は何も変化ないが
コメ1評価8だけど変化ないな でもたぶんgoogle側の問題でしょ、いろいろ変更してるみたいだし
774 :
デフォルトの名無しさん :2011/07/30(土) 14:33:35.87
コメントが500くらい減って100になったYO!
質問です TabActivityで、TabHostに対してsetContent(new Intent(this, MyInnerActivity.class) みたいな感じで 別ファイルで書いたActiviyのインスタンスを作って子タブとしてaddTabしてるんだけど このMyInnerActivity.java の中のロジックでthisが呼び出されてるコンテキストと実際のコンテキストが一致しないから Toast や Handler 等のコンテキストに依存する命令を呼びだすと失敗する MyInnerActivityの子タブの中から、自身を呼び出した親のコンテキストを取得する方法はあるんでしょうか
android NDKについて教えてください.
http://mobilepearls.com/labs/ndk-builder-in-eclipse/ ここを参考に、eclipseからndk-buildを行おうとしています.
上記サイトのように、ビルダーの設定は行ったのですが、
Cannot run program "C:\****\android-ndk\ndk-build"
(in directory "C:\****\android-ndk\samples\hello-jni"):
CreateProcess error=193, %1 ͗LøÈ Win32 AvP・・・
と出てしまいビルドが実行できない状態です.
Cygwinからndk-buildは実行できます.
エラーログを見る限り、in directoryの中にndk-buildがないよ
と言われてる気がするのですが、実際どう対処してよいかわかりません.
もしよろしければ教えてください.
>>776 パスが明確に記載されてないが、全角文字や半角スペースは含まれてない?
>>771 アクティブユーザーのみのが反映されるとかに改悪でもするつもりかな?
もしそうなら悪い評価のは減るだろうからインストールされやすくなるかもしれないけど
まともに動作しないアプリとかも情報得にくくなるからめんどいな
>>775 getParent().getBaseContext()
>>776 エラーコード193は"有効なWin32アプリケーションではありません"
ndk-buildってシェルスクリプトだろ
cygwinの/bin/sh経由で実行されるようにコマンドラインを書き換えろ
9patchの右と下って何に使うの?
>>778 あーそんな感じするな
1年前に公開停止してアクティブユーザーがもうほとんどいないアプリの評価の減りが一番激しいわ
Button WebView(インターネット上のページが表示されている) というレイアウトのビューになっている時、 Buttonをクリックすることにより、「WebViewの中に表示されている文字入力フィールド」に「文字列を入力させる」にはどのような方法がありますか? ClipboradManagerという仕組みがあるらしいのですが、Android3.0以降でないと使えないようです。 Android2.1以上で使えるプログラムを組んでいます。
>>783 自己解決しました。
EditText text=(EditText) findViewById(R.id.web).findFocus();
text.setText("hoge");
で現在入力中の位置に「hoge」と入力できました。
(R.id.webは、WebViewの名前)
コメントとレーティングが減ってるお 自演の評価が消えてるからIPでばれたとか?w
おまえら雑談スレにいけ
>>777 Pathに関しては、全角文字もスペースもないです.
>>780 無知ですみません
>cygwinの/bin/sh経由で実行されるようにコマンドラインを書き換えろ
というのは、
cygdrive/c/*****/android-ndk\ndk-build
とすれば良いということでしょうか?
誘導されて来ました よろしければご教授願います 最近アプリ開発を始めたのですが、 googlemapを利用したアプリで質問があります よく特定の施設のみにマーカーを表示したアプリがありますが (例えばカフェだけをマーカー表示したりなど) どんな方法で作られているのでしょうか? kmlファイルを利用して一括で位置情報をロードしているような気がするのですが、 具体的にどんなふうに表現されているのか 調べても分かりませんでした ItemizedOverlayで一個一個マーキングするのではないと思うし・・・ 自分の現在地をマーカーで表示するのは出来ています また個別に緯度経度を一個一個記述する方法も分かるのですが 例えばマイプレイスのkmlを読み込んで一括表示する 方法があれば教えていただきたいです どうかよろしくお願いします
@年前にmarketに出してたんだけど、8月くらいに新ライセンスに同意してくださいってメール来てて ほっといたんだ。んで、9月になってmarket見てみたら非公開になったうえアカウントが死んでた。 再開しようとしたらまた2500円必要とかで、ふざけんなと思って投げたんだよ。 で、今日アクセスしてみたらアカウントの紐付けみたいなのができて、再開できた。 なんだったんだいったい。
ゲーム作ったんだけどsurfaceview読み込み時に頻繁にフリーズする traceviewで見たけどDB周りもbitmap関連も問題なし というか、traceviewのログ出力をかますとフリーズしなくなった 何これ?処理が軽すぎて節電のためにスレッド寝てるとかか?
みんなアプリの対応OSバージョンって何からにしてる? 1.6〜対応にしとけば、機能は制限されるけど、多くの端末で使えるに違いない、 そう思ってたんだけど、 今調べたらほとんどの端末で2.1以降のOS積んでるのな・・・・。 機能制限やらなんやら、すごく無駄だったのか・・・
>>792 アクティビティ遷移時に固まるのでそれは違うっぽい
>>793 無いとは思うけどマニフェストにアクティビティ書いてないとか。
>>791 1.6のシェアは無視出来る位に縮小して無かったっけ?
>>795 国内だとそれなりにユーザのいるIS01が1.6のまま
URIって打つときにうりになって困るにだ
全角でうりって入力して変換してるのか?
質問です。 WebViewでYoutube動画を再生する際に、FullScreenボタンがあり、 実行するとonPause→onStop→onDestroyときてから再構築が始まり、 onCreateでWebViewのページを読み込み直してしまいます。 再読み込みせずにFullScreenモードにするにはどうしたらよいのでしょう? また、onDestroyにWebViewの解放処理を入れていると、 上記の際に解放されFullScreenモードになりません。 解放しないとホームボタンやbackキーで戻った場合も再生され続けるので、 どこかで解放を行いたいのですが、適切な場所はありますでしょうか? 誰かわかる方、教えていただけないでしょうか。。。
>>800 そのフルスクリーンボタンは自分で作った奴なの?
WebViewに表示されてるYoutube側のフルスクリーンボタンなの?
>>801 Youtube側です。
最近の動画はyoutubeだけではなく、MegaVideoとかでもあると思いますが、
右下の方にある全画面で見る用のボタンです。
804 :
800 :2011/07/31(日) 19:55:36.77
>>803 ありがとうございます。
私も、configChangesでどうにかできないかと、試行錯誤したのですが、
onPause→onStop→onDestroy→onContentChanged→onCreate→onStart→onResume
という順番でやってくるので、くるのがdestroyの後なので、
今回解放のための分岐に使用できないと判断しました。。。
Activityの遷移時だけ呼ばれて、
回転やFullScreen時には呼ばれないメソッドというのはあるのでしょうか?
805 :
800 :2011/07/31(日) 19:58:51.05
ソースは onCreate{ webView = (WebView) findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true);//JS利用OK webView.getSettings().setPluginsEnabled(true); webView.loadUrl(url); } onDestroy{ webView.clearCache(true); webView.destroy(); } にこれを置いているだけです。 ちなみにonDestroyにwebView.destroy()を置くと フルスクリーン再生できなくなるので、コメントアウトしています。
MAC使ったことないんだけど外で開発するならMACとWINどっちがいいですか? WINはドライバーが必要でMACなら心配ないみたいなことをよく聞くもので
どっちでも好きなほうを ドライバーなんか一回入れればいいだけだし PC変わるならAndroidのSDの中にでもドライバーやら開発環境掘り込んどけばいい
>>720 60万ってウハウハじゃん!働かなくていいじゃん!
何贅沢言ってんの!?
質問です。 言語によってデータベースのテーブルを切り替えることはできますか? たとえばtable-jaは日本語など。
従来のJavaだとLocale.getDefault()でLocaleが帰ってくるから、それの言語名を引っ張ればOK。 たぶんandroidでも動くだろう。
MapViewをxmlを使用せずに、クラスファイルの中で作りたいんですが、 どうすればいいでしょうか?
すみません事故解決しました。 MapView mapView = new MapView(this, apikey); でした。
>>810 即レスありがとうございます
こういう処理ってandroidでは一般的なんでしょうか?
調べても出てこないので皆さんどのようにされているのかなと思います
xmlのonclickでクラス内の関数を呼びたいのですがどうすれば良いでしょうか? 下のように書くと Could not find a method Fuga.moga(View) in the activity とエラーが出てしまいます。 ・Hoge.java public class Hoge extends Activity { public void onCreate(Bundle bundle) { super.onCreate(bundle); Fuga fuga = new Fuga(this); setContentView(R.layout.main); } } ・Fuga.java public class Fuga{ private Context context; Fuga(Context c) { context = c; } public void moga(View view) { 処理 } ・main.xml <Button android:id="@+id/xxxx" android:text="@string/xxxx" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="Fuga.moga"> </Button>
815 :
814 :2011/07/31(日) 22:49:15.28
修正です ×Could not find a method Fuga.moga(View) in the activity ○Could not find a method fuga.moga(View) in the activity ×android:onClick="Fuga.moga"> ○android:onClick="fuga.moga"> 宜しくお願いします。
>>813 そもそも言語でDB切り替えるってのが一般的ではないような…
何がしたいのか分からないからどう実装するべきなのかはっきりしないのと、
途中で言語変更された場合に対応できないけど
raw-jpとかは使えるから初回実行時にDBのファイルをコピーするとか
>>809 Stringsを言語分用意して、テーブル名切り替えれば?
818 :
809 :2011/07/31(日) 23:33:57.59
色々なご意見ありがとうございました。 stringsを使う方法が他と整合性が取りやすそうなので採用したいと思います。
819 :
デフォルトの名無しさん :2011/08/01(月) 00:52:24.58
SDK Managerをインストールしたのですが、文字入力ができなく困っています。 通常のコマンドプロントには入力可能です。 超初心者ですが、ご回答いただけると幸いです。
>819 もうちょい具体的じゃないとよく分からないな エスパーすると、SDK Manager起動時に開くやつならそこは入力可能な場所じゃないです
821 :
デフォルトの名無しさん :2011/08/01(月) 01:28:25.05
>820 上部にSDK Managerと書かれた黒いウィンドウのことです。 alt+半角/全角を押すと、日本語の表示はできるのですが、入力ができません。 この説明でご理解いただけますでしょうか?
テーブル名切り替えるだけで良いんだったら テーブル名をstring.xmlにでも定義しておけば 言語ごとにテーブル名を設定できる
>>821 >>820 でエスパーした通りです
起動時に踏み台にするだけの窓なのでcolseしても大丈夫
>>807 遅くなったけどありがとう
好きなほうにします
おまえを採用しません。
>>815 xmlからのメソッドコールはリフレクション呼び出しだと思うので、
setContentViewしたクラスのメソッドしか呼べないんじゃないかな?
なのでHogeのメソッド内からfuga.moga(view)を呼べばいいかも。
>>815 なにかこだわりがあるんで無ければsetOnClickListenerしたほうが早いと思う
SQLiteを始めたいと思うのですが プログラムないではなくて別のアプリケーションで別に作ったsqlite3ファイルを リソースフォルダ内に置いて読み込ませる方法はありますか? 調べてもプログラム内で生成するものばかりで... よろしくお願いします
初めて起動した時にリソースフォルダからDBフォルダにInputStream介してコピーすりゃいいだけ
デフォルトのカメラのような、最初から左右の位置にボタンを 複数並べて配置したいのですが、あれは何ていうの使っているのでしょうか? imageButtonを並べてるだけのようには見えないのですが・・・
aはtextView iはintagerで値は1 stringリソースhogeという値を使いたいので a.setText(R.string.hoge + String.valueOf(i)); としたところ、hogeのidが表示されてしまったので a.setText(getText(R.string.hoge + String.valueOf(i)); としたところ メソッドは未定義ですとでてしまいます 何か良い方法はありませんか?
>>833 つString hoge = getContext().getResources().getString(R.string.hoge);
またGoogleいらん事したな 評価返せよまったく
ここはAndroidプログラミング質問スレ何だけどそれがわかってて書き込んでんの? チラシの裏かtwitterにでも書いてろよ
あそこの評価なんて別に消えてもよくね? AppStoreがマンションすると、マーケット評価の民度なんて 団地みたいなもんだし
AndroidMarketの民度が団地ってのはまあ分かるけど、 それだとAppStoreの民度はヨハネスブルグの道端だと思います
>>832 機種によってデフォルトのカメラって違うから。
>>833 a.setText(getString(R.string.hoge) + i);
androidSDKについてくる、アイコン画像を使う場合は SDKの中にある画像データを、対応するdrawble-XXXXに、eclipseでインポートして使う感じでしょうか? それとも、別途呼び出す関数ってあります?
初期の真っ更のところにソフトキーを表示したいです。 解説に書いてある通り、エミュで、onCreateのところに getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); を記述したのですが出ませんでした。 これだけではだめなのでしょうか?指摘の程お願いします。
>>841 android.R.drawable.xxxx
どなたか教えてください SQLiteのデータベースファイルから日本語の文字データを取り込んで表示させたいのですが文字化けしてしまいます すべて設定はUTF-8で、dbファイルの中身をプロンプトで確認してもちゃんと日本語で表示されます 原因を調べる手段や解決のヒントなどありましたら教えてください
UTF8-N 違うか・・・
847 :
845 :2011/08/01(月) 19:18:58.34
>>846 UTF-8Nではないのを確認しました
これでもう一日ハマってるので助けてほしいですorz
848 :
845 :2011/08/01(月) 19:22:45.31
ちなみにコードはこれです 試しに読み込んだデータをtextviewに張り付けてるんですが日本語のみ文字化けします private void findData() { Cursor cursor = db.query("data", COLUMNS, null, null, null, null, null); boolean isEof = cursor.moveToFirst(); while (isEof) { TextView tv = new TextView(this); tv.setText(String.format("%s : %d : %d", cursor.getString(1), cursor.getInt(2), cursor.getInt(3))); isEof = cursor.moveToNext(); layout.addView(tv); } cursor.close(); onDestroy(); } お助けください・・・
1日とか有り得ん。 表示しようとしてるStringの内容をログに一文字づつ文字コードで表示してみ?
JavaのデフォルトってUTF-8じゃないだろ
>>848 UTF-8ってプロンプトで正しく表示できたっけ?
>>849 一文字ずつというか
データベースから取れた文字列と正しく表示される文字列を
バイトの配列に変換して比べれば分かるはず
853 :
845 :2011/08/01(月) 19:59:49.56
>>849 すみませんandroid始めたばかりなので・・・
具体的にどうやるのですか?
854 :
845 :2011/08/01(月) 20:01:49.83
>>850 プログラムの中で文字コードを指定するのでしょうか?
本当に申し訳ないです
>>851 UTF-8ロケールのlinuxやMacOSなら。
Windowsでもコードページ65001なら。
856 :
デフォルトの名無しさん :2011/08/01(月) 20:46:11.44
>>848 Stringのコンストラクタで明示的にUTF-8って
指定したらダメかな・・・。
>>854 時間の無駄。
UTF-16で作り直せ。
馬鹿には無理
↑煽ることしかできない能無し
2chで煽って何か出てくる時代はもう終わった 2chがもう終わってる
煽りを肯定するつもりはないが、 2chで質問する前提として煽りや無視は覚悟するべきだろう。 だってタダなんだもの。
2ch以外でどこか良いところありませんかね?
教わるまでは下手に出ていた方がいいと利根川さんも仰っております
丸投げ質問とかは嫌われる 自分でやってどこまで出来たか エラーメッセージを貼るとか 本気で解決したい意志を見せろ
よく負け惜しみで海外フォーラムなら親切に〜という人(英語が読めないくせに)をよく見るので そちらに頼ってみるのはどうでしょうか
867 :
845 :2011/08/01(月) 23:34:39.40
845です なんだか荒れてしまって申し訳ないです アドバイスくださった方ありがとうございます 修正してみました private void findData() { Cursor cursor = db.query("data", COLUMNS, null, null, null, null, null); boolean isEof = cursor.moveToFirst(); while (isEof) { String name_byte = cursor.getString(1); String name = ""; try { name = new String(name_byte.getBytes("ISO8859_1"), "Shift-JIS"); } catch (UnsupportedEncodingException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } TextView tv = new TextView(this); tv.setText(String.format("%s : %d : %d", name, cursor.getInt(2), cursor.getInt(3))); isEof = cursor.moveToNext(); layout.addView(tv); } cursor.close(); onDestroy(); } } こうしたら半分くらい解読できる日本語になりました ところどころ<?>という文字が出てしまいます これでいけると思ったのですが・・・どこかおかしいでしょうか?
環境は?
…DBがShiftJISなんじゃねえのこれ
>>868 コーディングと実行
eclipse(UTF-8)とAndroid SDK
dbファイルの中身確認用
sqlitestudio(日本語も正しく表示されています)
>>869 UTF-8で作ったdbファイルをasettsフォルダから吸い上げてコピーして表示しているのですが
そのコピーしているクラスが以下になります
78.private void copyDataBaseFromAsset() throws IOException{
79.
80. // asset 内のデータベースファイルにアクセス
81. InputStream mInput = mContext.getAssets().open(DB_NAME_ASSET);
82.
83. // デフォルトのデータベースパスに作成した空のDB
84. String outFileName = DB_PATH + DB_NAME;
85.
86. OutputStream mOutput = new FileOutputStream(outFileName);
87.
88. // コピー
89. byte[] buffer = new byte[1024];
90. int size;
91. while ((size = mInput.read(buffer)) > 0){
92. mOutput.write(buffer, 0, size);
93. }
94.
95. //Close the streams
96. mOutput.flush();
97. mOutput.close();
98. mInput.close();
99. }
どう見てもテーブルにShift_JISの文字列が入ってるようにしか見えないね。 UTF-8だったらヨーロッパ圏の特殊アルファベットとか、中国語とかアラビア語 とかの文字が混在入力できるはずだが、文字コード表からそういう文字拾って 入力しても正しく入らないだろ?
DBがUTF-8だっていう根拠を確認したいなあ SQLiteStudioで日本語が表示できるというのは、UTF-8である事を保証しないよん DBにエンコーディング情報は含まれているのだから
>>871 ありがとうございます
bdファイルの作成はサクラエディタで作ったcsvファイルを
あらかじめsqliteで作ったテーブルにコピーして作っています
今エディタからcsvファイルを編集しているのですが
ポルトガル語のアクセント記号付きアルファベットなどは
Aにアクセント記号がついたものなら「A」と表示されています
サクラエディタはUnicodeに難があるとかないとかって話なかったか
>>872 ありがとうございます
そうなんですか・・・!
プロンプトはUTF-8になっているのですが(65001指定)
プロンプト上ではdbファイルの日本語は表示されました
もしやサクラエディタでUTF-8で保存したcsvファイルを
sqliteで作ったdbファイルのテーブルにコピーしている時点でおかしいのかもしれないと思えてきました
サクラエディタで保存するときの設定は
ファイル名 ***.csv
文字コードセット UTF-8
改行コード なし
BOM なし
です
>>873 UTF-8でしかコードの無いものをSJISに変換したら化けるに決まってるじゃん
65001で表示できてるならUTF-8で間違いないはず… どこだろう?どこでデータが変化してんだ?
UTF-8で保存できているから
>>848 のコードで表示されないのもおかしい気がする
ロジック見て何がおかしいのか分からないんだったら 各値をログに出すなどしてどこでおかしくなってるか確認しようよ 表示されるべき文字が分かってるんだったら、 そいつをgetBytesした値も分かるでしょ
>>880 JavaのデフォルトはUTF-8じゃないからgetStringしたときにUTF-8では読み出して無いよ
つか
>>867 まで行ってりゃ分かりそうなものなんだけどね
codecs
884 :
845 :2011/08/02(火) 01:10:04.87
本当にみなさんありがとうございます 自分なりに考えてみましたが javaはそもそもUTF-16を扱っているのだから UTF-16をUTF-8に変換すればいい、という考え方はどうでしょうか? 今から試してみます
>>884 やってみた、動いた、は本当はダメなんだけど、多分それでちゃんと表示されるはず
>>885 getBytesした文字がUTF-16だったので
それをUTF-8に変換するように組んでみたのですが・・・
またひし形?ばかりになってしまいました
原因は
new String(name_byte.getBytes("ISO-8859-1"),"UTF-8");
だと思っているのですが、これ以上最適な変換方法があるのでしょうか?
UTF-16 = ISO-8859-1 という認識で間違いないでしょうか?
もっと文字コード勉強します
private void findData() {
Cursor cursor = db.query("data", COLUMNS, null, null, null, null, null);
boolean isEof = cursor.moveToFirst();
while (isEof) {
String name_byte = cursor.getString(1);
String name = "";
try {
name = new String(name_byte.getBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println(name);
TextView tv = new TextView(this);
tv.setText(String.format("%s : %d : %d", name, cursor.getInt(2), cursor.getInt(3)));
isEof = cursor.moveToNext();
layout.addView(tv);
}
cursor.close();
onDestroy();
}
}
うう・・・一日ずっとやっててもできませんでした・・・ 一日文字コードやっててもできないなんて自分に腹が立ちます これを気にもっと勉強します ヒントでも構いません、よろしくお願いします
ヒントはもう出とるがな
>>888 >>886 のソースに何か問題があるかな?
これでいけるんじゃないの?
Sqlite使ったことないからよく解らないけど
文字コード変換に問題ないキガス
ISO-8859-1はUTF系とは別物だし、そもそも日本語を表現できないよ。ググればすぐ分かる。 まずデータベースの中身をjava経由とsqlite3コマンド経由でファイルに書き出してそれぞれWebブラウザかなんかで開いてみたら?
>new String(name_byte.getBytes("ISO-8859-1"),"UTF-8"); 変換というかこれはISO-8859-1とみなしたバイナリをUTF-8の文字列とみなして読んでるだけじゃないの? これが通用するのはnew String(shift_jis_string.getBytes("iso-8859-1"), "Shift_JIS")のときだけだ。 明示的にCharsetDecoderとCharsetEncoderつかいなよ。
お前らイイヤツダナー 自分も文字コード関連疎いんでなにげに勉強になった
dbファイルとやらをアップしてみてはどうか?
>>867 で一部を除いて正しく表示されているんだったら
データがShift_JISになってる気がしないでもない
>>895 でもシフトJISになってるんならこの時点で全部表示されないか?
CharasetDecoderするのがいいような気がする
質問者来たらデータベースのファイル上げてくれ
Androidで基本的に存在する3つのボタンの1つに、機能を割り当てたいと思っています。 【戻るボタン】 【ホームボタン】 【メニューボタン】 このうち、Androidで設定しないと使えないのが【メニューボタン】だけとなっています。 正直【戻る】と【ホーム】はデフォルトで割り当てられていますし、機能的にも 無効化しちゃいけないと思ってます。 となると、消去法で【メニューボタン】のみになるのですが、 UI的に【メニューボタン】に対して、メニュー以外の操作を割り当てるのって 好ましくないですかね?
よろしくないかな。 ユーザがメニュー押したらメニューが開くっていう意識があるから。 ハードキーに、逸脱した機能をつけるのはよくないかも。 ちなみにホームボタンの無効化は不可。
バイブレータを永久に鳴らしたいんだけど、どうしたらよいのでしょう? Vibrator vib = (Vibrator)getSystemService(VIBRATOR_SERVICE); vib.vibrate(鳴動時間); として鳴るんだけど、鳴動時間には -1 とか 0 を入れても無限にならないよね。 ちなみに、鳴動時間は long なので気休め程度に(意味ない値じゃないってことで)、 vib.vibrate(Long.MAX_VALUE) とすると一切鳴らなくなる(それに近い値でも同じく鳴らない。 要するに、vib.vibrate() の引数は long とかいいながら、Long.MAX_VALUE が最大値じゃない)。 もちろん、タイマー張って、鳴動時間内で繰り返し vib.vibrate() すれば見かけ上永遠に鳴っていると思うけど、 あまりにもスマートじゃない。どうすれば……
初歩的な質問なんだけどさ 他のクラスから、コンストラクタしてActivityクラスのメソッドを呼び出すのってできないのかな? ゲーム作ってて勝ち条件が整うと、自動的にダイアログ表示して名前を入力させるってところを作りたいんだが。
エミュでソフトキーボードを出すと携帯のようなタイプ(10キーのような最初がABCと切り替わっていくキー)が 表示されるんですが、フルキータイプ(QWERTY)を表示させるにはどうすればいいですか?
一度作成したオブジェクトを、onConfigurationChangedのタイミングで ヒープ上から削除、再度作成しようと考えています。 ヒープ上からオブジェクトを削除する方法ってありますか?
レイアウトで四苦八苦中、 画面を右と左で分けて出したいのだけれど、中央分割のやり方が分からない XMLファイルを弄る感じだけど、matchはフルだし、wrapは微妙だしでどうすればいいのか 全画面orフリーサイズしかでねぇ・・・ フリーサイズだと、画面サイズが違う携帯だとレイアウト崩れて意味が無いしどうしたものか・・・ レイアウトに詳しいサイトあったら教えて欲しい…
>>903 android:layout_weight
について調べるといいかもしれない。
908 :
845 :2011/08/02(火) 16:49:05.85
>>845 です
寝てしまった後もアドバイスくださった方ありがとうございました
アドバイスを頼りに調べて修正してみました
private void findData() {
Cursor cursor = db.query("data", COLUMNS, null, null, null, null, null);
boolean isEof = cursor.moveToFirst();
while (isEof) {
String name_byte = cursor.getString(1);
byte[] bytes = null;
try {
bytes = name_byte.getBytes("ISO8859_1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//Shift-JIS >> UTF-8
Charset charset = Charset.forName("Shift-JIS");
CharsetDecoder decoder = charset.newDecoder();
ByteBuffer bb = ByteBuffer.wrap(bytes);
CharBuffer cb = null;
try {
cb = decoder.decode(bb);
} catch (CharacterCodingException e) {
e.printStackTrace();
}
TextView tv = new TextView(this);
tv.setText(String.format("%s : %d : %d", cb, cursor.getInt(2), cursor.getInt(3)));
isEof = cursor.moveToNext();
layout.addView(tv);
--- 以下略 ---
909 :
845 :2011/08/02(火) 16:53:01.54
↑のコードで実行したら一部nullが返ってきました 表示されたものもあります CharsetDecoderでUTF-8に変換したものをtexiviewに埋め込んでいます 一部がうまく表示できるのは文字コードが混在しているからでしょうか?
910 :
845 :2011/08/02(火) 16:57:44.09
>>909 だからさあ、データベースが手元にあるならなぜ文字コードを調べないの?
getStringじゃなくてgetBlobで直接byte配列が取れるからそれをDecodeしてみろ
>>911 で、できました・・・
本当に本当にありがとうございます
助かりました
>>910 ちなみにnameの文字コードはすべてUTF-8だったぞ
バイブ音に反対の音を出してノイズキャンセラー付きのバイブアプリなら売れるかもw
googlemap系の質問がスルーされてるのはなんでだろうな
誰も答えられないからじゃね
この板でgooglemap使ってるのが少ないんじゃない?
main.javaがあったとしてそこにonCreateで別のクラス(hoge.java)を呼び出すとき main.javaの数値はhoge.javaで継承していません。 継承するような書き方はあるのでしょうか?
ある
「main.javaの数値」が意味不明。
例えば main.javaで int aa = 1; hoge.javaで aaを使いたいのです
>>923 androidっていうかJava言語の質問だけど、
それがしたかったらprotectedかpublic、且つstaticではない変数を、メソッド内でなくクラスの
メンバー変数として宣言する。ただし継承によって引き継がれる数値は、クラスのインスタンス
ごとに実体が生成されるので、当然全く異なる値を保持することになる。
もしかしてmain.javaクラス内で宣言&代入した変数の値を、hoge.javaから読み書きしたいので
あれば、それは継承では実現不可能。public且つstaticな変数(それ自体キケンだが)を使うこ
とになる。
androidの入門書以外にJavaの入門書読まないと、そんなレベルでは動くアプリなんて絶対無理。
基本的にjavaではクラス内でしか変数は使えないということですね。 わかりました。 ありがとうございます。
とてつもない勘違いをしてそうな気がする とにかくまずオブジェクト指向を理解しろ
mainの参照渡せば良い
>>923 main.java
static int aa = 1;
hoge.java
main.aa
で使えるよ。とても良くない書き方らしいよ。
sqliteデータベースからselectで値を取ってきたとき、 カラム名を取得することはできますか? 色々調べてみましたが、cursor.getString(0);など、インデックスでしかアクセスしていません。 以下のようにカラム名と変数名を一致させたいのです。 hoge=cursor.string("hoge"); 方法があれば教えてください。 宜しくお願いします。
システムの設定画面のリストってListViewですか? あと、タップすればContextMenuが表示されるマークの > (←これを丸く囲んだアイコン)ってどうやって出すのですか?
>>930 設定画面を作りたいならPreferenceActivityを使えばいい
システムの設定画面が実際に何使ってるかは俺は知らない
>>928 その書き方ならせめてvolatileにすべきだろうな。
一体どこからその変数の値が書き換わるのか全くわからず、そんな定数でない変数が
メインクラスに書いてあるのは俺的には信じがたいことなんだけど。
>>933 ああ、そういうものがあったんですか・・・てか初歩中の初歩っぽいですねすみません
ただメイン画面の上部に2枠だけ固定で常時表示させたいので、ListViewで似たように実装してみます
ありがとうございました
>>929 カラム名からIndex取るメソッドもあるからそれ経由で取得する
>>934 ごめん俺もjava覚えたばかりだから、
実はstaticなフィールド変数がダメな理由とか全然知らない。
>>935 ActivityGroupで1画面に複数のActivityを表示できるみたいだから
固定部分用のPreferenceActivityとその他のPreferenceActivityを縦に配置できないかな
やったことはないので出来るかどうかはわからない
>>931 Hoge hoge = new Hoge(main);
>>938 おお、なんだかできそうな気がします!
もう眠いからあさって試します!ありがとうー
ワラタw
明日はデートなんだろ
944 :
デフォルトの名無しさん :2011/08/03(水) 01:53:57.69
ActivityGroupを使用して、複数のActivityを1画面に 表示しているんだけど、そのなかで外部のActivityをstartActivityForResult で起動したんだけど、onActivityResultが呼ばれなくて弱ってるんですが 分かる方教えていただけないでしょうか?
945 :
Android初心者 :2011/08/03(水) 02:04:52.12
カメラで撮った画像をモノクロに加工してSDカードへ保存したいのですが、うまくいきません。 いろいろなサイトを参考にして次のコードを書いています。 public void onPictureTaken(byte[] data, Camera c) { if( camera != null ){ Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length, null); int w = bmp.getWidth(); int h = bmp.getHeight(); for (int j = 0 ; j < h/4 ; j++){ for(int i = 0 ; i < w/4 ; i++){ int color = bmp.getPixel(i, j); int r = Color.red(color); int g = Color.green(color); int b = Color.blue(color); int contrast = (int)((double)r*0.3+(double)g*0.59+(double)b*0.11); // 明るさを計算 // ここでピクセルデータをいじくる bmp.setPixel(i, j, Color.rgb(contrast,contrast,contrast)); } } MediaStore.Images.Media.insertImage(getContext().getContentResolver(), bmp, "", null); camera.startPreview(); } } この場合、SDカードに書きこむ際に落ちてしまいます。
946 :
Android初心者 :2011/08/03(水) 02:09:03.61
次のように変更して、一旦Bitmapをコピーして行ったのですが、今度は 加工前の画像が保存されてしまいます。 if( camera != null ){ Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length, null); Bitmap bmpCopy = bmp.copy(Bitmap.Config.ARGB_8888, true); int w = bmp.getWidth(); int h = bmp.getHeight(); for (int j = 0 ; j < h/4 ; j++){ for(int i = 0 ; i < w/4 ; i++){ int color = bmp.getPixel(i, j); int r = Color.red(color); int g = Color.green(color); int b = Color.blue(color); int contrast = (int)((double)r*0.3+(double)g*0.59+(double)b*0.11); // 明るさを計算 // ここでピクセルデータをいじくる bmpCopy.setPixel(i, j, Color.rgb(contrast,contrast,contrast)); } } MediaStore.Images.Media.insertImage(getContext().getContentResolver(), bmpCopy, "", null); camera.startPreview(); } } 単純にBitmapのデータをSDカードに保存するってだけなのですが、 どうしてもうまく行かずに途方にくれています。 ご教授お願いいたします。
>>944 ActivityGroupの方で呼ばれてないかい
949 :
Android初心者 :2011/08/03(水) 07:01:30.22
すいません。
>>946 のほうはうまく動いてたっぽいです。勘違いでした。
>>945 で落ちる理由はわからないままです。
MediaStore.Images.Media.insertImage(getContext().getContentResolver(), bmp, "", null);
の実行で落ちているようなんですが、僕のスキルではその中までデバッグできません。
>>949 どんな落ち方をしているの?例外は確認した?
>>949 SDカードに保存って権限必要じゃなかった?
WRITE_EXTERNAL_STORAGE付けてる?
>>947 返信ありがとう。
だけど、ActivityGroupのほうでも呼ばれない。以下のコードでギャラリー読んでるんだけど
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, 55);
2.3からのテキスト選択を無効、あるいは任意のタイミングでのみ呼び出したいのですが、どうすればいいのでしょうか。
adb shell setprop dalvik.vm.enableassertions allていま実機だと動く端末ある? 海外のフォーラムあたったら2010年頃はプロパティは存在するけど動いてないっていう話は見つけたんだけど近況が見つからなかった。 JUnitのアサーションじゃなくて言語のアサーション使いたいんだけどまだダメかな?
>>947 解決しました。
getParent().startActivityForResult(intent, 55);
で呼び出したらActivityGroup側のonActivityResultが呼ばれました
>>934 static変数が美しくないのは同意だけど、マルチスレッドじゃないからvolatileは関係なくない?
あれ、Activityってそれぞれ別のスレッドで動くんだっけ?
>>929 hoge = cursor.getString(getColumnIndex("hoge"));
>>952 シングルタスクだとダメとかあるみたいだけど違うか…
Google Checkout の受信トレイにある「発送」ボタンってなんなの?? Androidアプリのなにをどう発送するの?
Androidに限ったシステムじゃなくて通販と共通のシステムだからでしょ なんで発送で止まることがあるのかはわからんけど インストールされてない場合じゃないかと勝手に予想
Eclipse起動したパソコンに、実機をつないで動作確認しながら作ってるんですが、 サービスのログって出ないんですか? バックグラウンドでgooglemapsの処理をやろうとしてるんですが、強制終了してしまいます。 エラーが出る箇所はわかるものの、どういうエラーかがよくわからず・・・
froyo-x86 使うとログ取れるよ
>>961 ありがとうございます。
ググったらすごいめんどくさそうなので勘でやります。
コンストラクタの中で端末の大きさを設定したいのですが getWidth()やgetHight()をしても0になっているようです。 どうすればいいでしょうか?
>>960 サービスでも android.util.Log使えるでしょ
catchしてログ吐けばいいじゃない
wavファイルをbyteに変換しようと、 AudioInputStreamを使ってみたのですが、ndkに入っていないようで。 javasdkをインストールし、パスを通してみたものの認識しない。 自前でプロジェクトにjarを追加するとビルドに以上に時間がかかり eclipseがエラーで落ちてしまいます。 AudioInputStreamを使わないで変換する方法は無いでしょうか。
つ InputStream
970 :
963 :2011/08/03(水) 19:16:36.57
結論を言うとサーフェイスビューの画面サイズはデフォルトで320*480 そしてgetWidth()やgetHeght()は取得できないためパラメーター等で 横320以上縦480以上は扱えない(できるが端末に依存する) 以上
>>972 SurfaceView = sView;
sView.getLayoutParams().width = 100;
でいけたと思う。
serviceで使ってるhandleMessageの止め方がわかりません。 知ってるかたご教示願います。
>>975 メソッド内では取得できたけどそれをコンストラクタで使えないというか持っていけない
どこのコンストラクタw
>>963 初回起動時にプレファレンスに記憶して次回からコンストラクタ内で情報取得っていう手はない?
>>979 サーフィスビューのサイズを取り出して何に使うのかちゃんと書け
androidに限らず、GUIコンポーネントのサイズが決定されるのは インスタンス生成後〜初回描画までの間である場合が多い。 コンストラクタで取ることは難しいように思うけど。
javascriptで言うeval(aaa)、asでいうthis[aaa]のように、 Stringの中身を変数名として使う方法はありますか? int bbb; String aaa = "bbb"; (aaaの中身) = 3; でbbbを3にしたいです。
いみふ
なんでSurfaceViewのコンストラクタで設定する必要があるの? サイズ取れた時点で設定すりゃ良いじゃん
>>981 私もViewが表示されるまでgetWidth()は0のままだったので
Asyncで値を監視し続けて0以外の値になったらその値を使用した
で解決したが面倒だよねw
>>987 onResume辺りまで行けば確保されてないか?
まあ取れるまで待つってのは一番確実ではあるけど
せめてonSizeChangedとかでやろうよ…
Windowsネイティブプログラミングやってきてないおとこのひとって変なことするよね。。。
何度かこういうやりとりをこのスレで見たような気がする
おれも
それより次スレよろ
男は黙ってPHPだからJavaはわかりません(キリッ
レベル低いから立てられないでござる・・・
ERROR:新このホストでは、しばらくスレッドが立てられません。 またの機会にどうぞ。。。 最近立てた覚えないのにな
てすてす
うめ
うんこ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。