Androidプログラミング質問スレ Part35
1 :
デフォルトの名無しさん :
2013/08/16(金) 13:39:00.09
androidのレイアウトってxmlとlayoutインポートしてコードで作るのとどっちがいいですか? 自分的にはコードで書いたほうがやりやすいんですが
XMLで書いた方が楽
xmlで書いた方がリソースがキャッシュされるとか利点多い
MVCにのっとってロジックとUIはできるだけ分離するのだ!
EclipseでXML書く時補完が機能しないことが多いんですがこんなもんですか?
断然xml派 細かいレイアウトをコード記述でやったら軽く死ねる
アプリの動作中にレイアウトを変更するようなケースだとXMLは役に立たない
まともにやろうとすると最終的にレイアウトマネージャを自分で書くという結論に達するんだよね。 デフォルトで用意されているのはサンプルみたいなものだというのが分かっていない奴が、 無理に使おうとして無駄な苦労をするのは失笑するしか無い。
12 :
デフォルトの名無しさん :2013/08/16(金) 20:03:09.51
BACKキー(戻るキー)のイベントをソースから発行したいです。
下記サイトを参考にして書いていますが、
まったく音沙汰がありません。
ttp://d.hatena.ne.jp/blatt/20100110/1263127477 ttp://yamato-iphone.blogspot.jp/2012/02/blog-post_17.html ■onCreate内
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
publishBackKeyEvent();
}
});
■自前関数
private void publishBackKeyEvent() {
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
dispatchKeyEvent(event);
Toast.makeText(MainActivity.this, "back", Toast.LENGTH_SHORT).show();
}
トースト "back" は表示されますが、
BACKキーの動作が確認できません。
期待値は、アプリ(Activity)の終了です。
どこが可笑しいかご教授いただけますでしょうか。
よろしくお願いいたします。
単に finish(); 呼ぶだけじゃだめか?
>>12 DOWNイベントとUPイベントが必要なんでないかい?
トーストまで出来てるんだから、そこに終了の処理を書けばいいだけじゃないか バックキー呼んだだけじゃ終了しないぞ
16 :
デフォルトの名無しさん :2013/08/16(金) 21:12:56.15
downのあとupしないといけないんじゃない?
17 :
デフォルトの名無しさん :2013/08/16(金) 21:13:43.04
やっと書き込めたと思ったら内容被ってたorz
>>13 たしかにそれでも良いですね。
ありがとうございます。
>>14 ,16
DOWNのあとにUPを足したら、希望の動作になりました。
finish()とどちらにするか悩んでみます。
>>15 はい。ありがとうございます。
UPだけで動くけどな
20 :
デフォルトの名無しさん :2013/08/16(金) 23:22:19.18
質問です EditText内にある複数行の文字の中から最初の3行だけ削除するにはどうしたらいいでしょうか? setSelection(int start, int stop)というものがあることも知りましたが これは文字数で指定してるようなので・・・ 都合良く行で指定できる関数とかありませんかね
>>12 Instrumentation、sendKeyDownUpSyncあたりで調べてみ
なんかandroid.text.Layoutとか使ったらなんとかできないかね
str.split("\n",3) でなんとかなりませんかね
ある書にハンドセットとダブレット用の時にフラグメントを使ってかき分けるなんて書いてあったんですが タブレットでわざわざ1アクティビティを分ける必要ってあるんでしょうか
別に必要ではない 様々な画面サイズに合わせてそれぞれ適した画面レイアウトを用いればより使い勝手の良いアプリになるというだけのことだ
Android開発の参考書を探しています。 Javaに関しては基本的な文法はわかるのですが、Android開発に関してはまったくの初心者です。 サンプルだけではなく基礎から丁寧に解説を行ってくれるおすすめの参考書などありますでしょうか。
本屋で自分で見てよさそうなの買えばいいのに
>>27 最初の最初なら、15才から始める〜シリーズのAndroidの奴がおすすめ
これやってから他の本にステップアップするといい
>>28 本屋でみてみたところあまりにも大量にあり分からなくなってしまいまして…
>>29 ゲームプログラミング向けの参考書なんですかねこんど見てみます!
出来ればDBのアクセスの仕方など実践に使えるものも書かれているものだと助かります
>>30 Android Developersって言う無料サイトおすすめ。超おすすめ。
すみません、質問です。 webviewを設置しています。 そこに表示しているページ内で、 10秒ごとにjavascriptが発動して ページのリフレッシュをしているとします。 ホームボタンを押して このアプリを閉じたときも このページのリフレッシュは裏でずっと行われ続けますか? それともjavascriptの活動はその間、停止しますか?
カウンタ使えば自分で簡単に実験できるやん。
働かない
38 :
33 :2013/08/17(土) 15:25:26.14
手元のAndroid機三つで実験したところ二つは動き続けてましたが、 一つは更新が停止していました。機種依存ということでしょうか。
AysncTaskが詳しく説明さているサイトがあったら教えて下さい
40 :
デフォルトの名無しさん :2013/08/17(土) 16:31:23.42
android:hardwareAccelerated="true" ってみんな使ってる? 俺の端末だとこれやるとめっちゃ快適になるんですが、 他の端末では逆に不具合出たりする可能性ありますか?
>>40 について俺も知りたい
誰か頼む
>>33 は聞くまでもなく、自分で試せばわかるやん
>>40 ものによる
android:hardwareAccelerated="false"
にしないと遅くなる場合もあるし
>>31 Webより書籍のほうが自分は頭に入ってくるんで!
>>32 日本語のとこでおねがいします!
48 :
デフォルトの名無しさん :2013/08/17(土) 20:26:26.13
てか「hardwareAccelerated 不具合」でググれよ・・・
ほんとAndroid Developers読まないやつ多いよな
実際英語できない人多いから
訳したら需要ある?っていうかそういえばどっかに翻訳なかったっけ
そりゃ日本語のようにスラスラ読める人って結構少ないでしょ それだったら初心者向けに書かれた書籍を読もうとするのは普通
つまりAndroid Developersは初心者に向いてない
若いころ英語やっときゃよかったって今でも思うわ
そうなると初心者向けの参考書って何なんですかね? 店舗でみてもサンプルばっかり載せてるものばかりでハードル高くて…
そのサンプルを自分で書いてどれがなにしてるのか理解していくんじゃないのか?
俺はアメリカの大学に留学してたから英語余裕だぜ、マジ捗る
英語ドキュメント触れる機会増えてある意味英語練習になってるが 生活英語の方はこれでは上がらないな
「楽しみながら作ってみよう! はじめてのAndroidアプリプログラミング」 から始めるのがオヌヌメ
こういうのを作りたいってのがあって、 それを作るためにネットで調べながら試行錯誤するのが一番実になる 本だけ読んでても何も作れるようにはならない 結局こういった輩は何か作ることが目的なのではなく プログラミングの勉強をしているということそのものに 満足感を求めているだけなので結局何も役に立つものは 作れずに終わるものと相場は決まっている
>>61 今度本屋でみてみます!
中身てきにはDBのアクセスとかも学ぶことができるみたいですね
作りたいものはあるけど入り方がわからないって人も多いと思うんだ そんな人には入門書とかじゃなくて実際に作ってみるタイプの本をおすすめする
http://i.imgur.com/tbCsF8g.png AsyncTaskのonPostExecuteでエラーが発生し、コールされないのですがどう対処すればよろしいでしょうか?
@Overrideを消せばエラーは消えますが、51行目でreturn "Thread Success!";してもonPostExecuteが呼ばれません
javaのバージョンを1.6にすればいいとの情報があったのですが、既に1.6でフルビルドもしています
>>65 AsyncTask を AsyncTask<Object,Object,String> にしてみ
>>66 なるほど・・・ありがとうございます。
AsyncTask task = new AsyncTask<Object,Object,String>() {
としたら無事狙った動きをしてくれました。
ジェネリックというやつで調べればいいのかな
先にAsyncTaskの横に出てる警告を見るべきだろう エラー出てるとこでCtrl+1押せばある程度自動修正してくれる
70 :
デフォルトの名無しさん :2013/08/17(土) 23:31:19.70
>>65 new AsyncTask<Object,Integer,String>()でどう?
>>68 本当だ「AsyncTask は raw 型です。総称型 AsyncTask<Params,Progress,Result> への参照は、パラメーター化する必要があります」
と出てて、読めば型を指定する必要があるって読み取れましたね・・・
>>69 ありがとうございます。やはりリファレンスは読まないとですね
>>70 サンクス。それでいけました
作ってみるタイプも、ただ写経してるだけじゃ意味ないけどね
本当に作る気がある奴は本読む前に作ってるだろ。本はその後必要なものを買う。
毎回 USER AGENTを200パターンの中から切り替えて 携帯回線も接続しなおしてIPを変更して クッキーも削除 これで1〜3秒おきに広告を踏むようなプログラム作ってみた これなら広告代理店への騙しクリックが有効になるのかな?
Android4.0からメニューボタンがなくなっていることを今日知った… なんてこった、本だけで情報得てるとこういうことになるのか、本はアップデートされないからな でも4.0以降の端末でも、メニューボタンが出るやつと出ないやつがあるな、なんでだろ?
>>75 4.0メニューなし
4.2以降アクションバーにオプションメニューが出る
>>76 およ、俺の4.1.2の端末だと普通に左からバック、ホーム、メニューになってる
むしろ4.0からあるはずの最近のアプリボタンが一切出ない
78 :
デフォルトの名無しさん :2013/08/18(日) 06:18:20.22
エミュレータとか重くてやってらんないよ 3円維持でいい機種買えるのに…
そういうの都会じゃないとないんじゃね?
ソケットの接続が確立されたのを知りたいんですがどうしたらいいですかね...
invalidateみたいな運任せじゃなくて 強制的にViewを再描画するメソッドってないんですかね
まず全裸になります。 次にsocketハンドルの値を確認します
Bluetoothの関係のコード書いてる人いますか? BTSocket.connect()するとIOException:Service discovery failedが発生するんですがググっても解決できませんでした 何か知ってたら教えて欲しいです
>>82 MNPこじきの話じゃないのん?
au買って半年寝かせてsoftbankにMNPするとめっちゃ安い!とか
>>84 再描画が呼ばれたかどうかを定期的にきっちり確認して、
呼ばれるまでしつこく繰り返す。
>>87 実績があるサンプルでの現象なら、適所に「待ち」を入れる
Androidはバグがあってそれを見越した上でバッチ当てみたいなコード汚ししないといけないことが 何度かあったな
>>90 適当に5秒待たせてConnectしてみましたができませんでした
謎だー…
署名って 二本目以降のリリースにも同じの使えるの? それとも完全にアプリごとに分けなきゃダメなん?
94 :
デフォルトの名無しさん :2013/08/18(日) 11:36:16.22
>>94 ありがとう
ちなみに署名って
利用者から確認されるのかな?
誤って本名を入れてしまった
>>92 もっと具体的に書け
何につないでいるかさえ分からんw
サービス見つからんってんだからpermission書いてないとか そもそもBluetooth対応してないとか エミュでやろうとしてるとか
ソケットはサーバアクセプトさせたときに 1バイト以上書き込みしてもらうとかで確認する それまでint read()でブロックする それかboolean isConnected()をループの中で呼びつづける
ダウンロード機能つけたいんだけど、スレッドを分ければ同時ダウンロード数に制限はないのでしょうか?
みんなは一日に最高何本アプリをリリースしたことある? 自動マクロ公開とかで量産とかやってる?
1本に時間かかるのになんで複数同時リリースの必要が
そりゃ、釣りアプリを大量リリースするゴミだからだろ
ゴミ過ぎる
なんていうか、脳の作りが常人と違うんだろうな・・
>>99 プロトコルと、ダウンロード先のIPが同一なのか否かでちょっと変わる
>>95 署名の内容を表示するようなアプリを作ることはできる
Androidの標準のアプリにはそういったものは無い
PlayStoreとかにそういうアプリがあるかどうかは知らん
AudioManagerの audioManager.setSpeakerphoneOn(false); はスピーカーからの音出力on/offするものではないのでしょうか? 実際on/off切り替えできませんでした。 切り替える方法を教えて下さい。
>>108 まず、パソコンにeclipseってソフト入れろ。
>108 targetで「google APIs (google Inc) API level xx」ってやつを選べば、google Mapは最初から入ってるが、それではだめなのか?
>>107 強制的にSpeakerに向けるかどうかのものであって、
スピーカーからの出力をOFFするもんじゃない
たとえばVOICE_CALLのStreamなんかはEarpieceからでるので、
こういうものをSepakerから出したいときなんかにONする
112 :
デフォルトの名無しさん :2013/08/18(日) 22:23:45.01
>>109 Eclipseは導入済みです。
>>110 google API4.2.2 (APIlv17)をターゲットに選択していますがエラーはでます。
エミュレーター上でGoogle Mapアプリが入っているからそれではどうなのか?
という問いであれば、「Google Mapを応用したアプリを作りたいと考えているため、
自作アプリ内で動作させたいです。」が答えになります。
>Google Play servicesの新しいバージョンのapkをネットから探してくるしかないらしい。 こういうことをサラッと書いてる辺りが恐ろしい
単純に再生デバイスのうち内蔵スピーカーだけ 出力をオン・オフ切り替えるにはどう書けばいいですか?
>112 そうなんだ、ゴメンね。 「エミュレーターでGoogle Mapsを動かしたく」って書いてあったから・・・ Google Play servicesは、ネットから探してくるものじゃなくて、 Android SDK Managerを使って、自分の開発環境に導入するものなんだ。
>95 jarsigner -verify -verbose -certs aaaaa.apk こんなコマンドを打てば誰でも X.509, CN=お前の本名, X=XXX, X=XXX こんな情報を得ることができる。 鍵ファイルとかパスワードなんか無くても、だ。
携帯のipってそんな簡単に変えられる?
ていうかPCでもスマホでもいかさまクリックは可能なわけで ASPとしては疑わしきは罰する形でしょ。インプレッション・クリック・インプレッション量とページランキングのバランス どれかおかしければ、単価0.01円とかにされる 単価も広告表示量もはては支払い拒否の権利さえもASPが握ってるんだから
>>74 100%バレるよ。200%と言ってもいい。
詳細は
>>119 の通り
クリック数の平均って1人1人違うように感じて実は全体で大体同じくらいになる数字マジックがあるんだよお
業者は膨大な過去データからその法則を知ってるんだお
AdMobだとどっかで紹介されて一気にクリック数増えたら不正扱いされて垢BANされたとかあるしな
去年50万稼いだアカウント消されたんだけどね ログインしようとして「このアカウントは凍結されています」と出るショックといったら。
124 :
デフォルトの名無しさん :2013/08/19(月) 01:20:53.23
>>115 書き方が紛らわしく申し訳ありませんでした。
SDKから導入するんですね。ありがとうございます。
ただSDKマネージャに存在する項目はすべてインストール済みで、アップデートもすべて最新の状態にも
かかわらず相変わらず同じエラーがでるのですが、この原因がわかりません。
私が最初に上げたサイトの著者さんがどのように解決したのかもわからず大変困っております。
どなたか重ねてになりますが、解決方法をご存じの方が降りましたらお願いします。
125 :
デフォルトの名無しさん :2013/08/19(月) 01:23:20.72
このブログで書かれている様にして、
ttp://starzero.hatenablog.com/entry/20110414/1302759479 ユーザーのスワイプ操作を取得することを試みています。
layout上にボタンなどを何も置いていない場所でスワイプした
場合にはうまく取得できました。
ですが、例えば指を画面に置いた場所がButtonやListView上の場合、
onTouchEventが呼ばれず、当然スワイプ操作も取得できません。
ブレークポイントをonTouchEvent関数内においても、停止しませんでした。
Buttonなどの上に指を置いたりした場合にも
スワイプを取得したいのですが、どのように書けば良いのでしょうか?
よろしくお願いします。
>>125 dispatchTouchEventを使ってみたら
サンプルプロジェクトBluetoothChatの日本語バージョンってありますか? ないなら訳します。。。
>>127 コメが日本語って事かぃ? それはないなぁ(今年1月に造った時の話)
ってゆーか、大した事ないから簡単に応用出来るだろ?
SPPでやりたいのかな? もしかして...
>>116 でもapkファイルの取得って
無理じゃね?
インストールすると
展開された状態でスマホの中に入ってくるし
>>119 つまりはライバルとかに使うと
陥れられるってことか
admobとadsenseを表示させてるんだけど かなりヤバいよね? バレたら即バン? wikiをwebviewで表示させてる wikiの中にはadsense表示 アプリ側にはadmob表示
>>132 webview内のリファラがどうなってるかわからんから
adsenseは不正に貼られてるとみなされるかもよ
サポートに聞いてみたら?
あれのどこを訳すんだ?
>>130 デコやった事ないのかぃ?
今はルート無しで楽々抜けマス
マンコくせーやつだな
矩形のテクスチャを台形に貼りたいのですが、 この場合は2Dを使うのでしょうか?3Dを使うのでしょうか? サンプルで勉強しているのですが、パラメータを変えても三角形で、山折り、谷折りのようになってしまうので悩んでます
いい感じに台形に貼るにはw座標値を調節せなあかんけど説明するのは面倒い
>>138 ありがとう 十分参考になります
3Dを使えばよいわけですね?
141 :
デフォルトの名無しさん :2013/08/19(月) 19:05:13.06
>>140 未だ解決に至っていません・・・。
SDKから環境に導入したあと、更にエミュレーターに対して何か設定をする必要があるということなのでしょうか・・・。
もしそうであればどなたか詳しく教えていただけると大変助かります。
AndEngine(アンドエンジン) を使用して勉強しています。 小さな画像をタイル状に敷き詰めたスプライトを作成したいと思っていますが、 そのやり方がわかりません。小さな画像は単純に1種類の画像です。 どなたかそのやり方が分かる方教えて下さい。
AudioTrackをストリームでplay。 ストリームが途切れた場合、AudioTrackは1200ms毎に再起動します。 ストリームが復帰したとき最大1200ms再生が遅れる。 この遅れを小さくするにはどうしたら。教えてエロい人
145 :
125 :2013/08/19(月) 21:45:46.84
>>126 ありがとうございます。
希望の動作になりました。
onTouchEventとdispatchTouchEventについて
解説されているサイトを見て、動作に納得しました。
その後色々と試しているのですが、別のところで躓きました。
>>125 をdispatchTouchEventに置き換えたものを
PreferenceActivityをextendsしたActivityに導入してみたのですが、
PreferenceScreenの中に入った状態では
タッチイベントを取得できませんでした。
PreferenceScreenの中に入らない、一番TOPのPreferenceでは
タッチイベントを取得できています。
PreferenceScreenの中に入ったところでも
イベントを取得したい場合、どうやって書けば良いのでしょうか?
(技術的な興味だけなので、もし分かりましたらご教授願います)
146 :
デフォルトの名無しさん :2013/08/19(月) 22:28:22.75
よーエミュレータで開発しようと思うな core i7でも起動が遅くて結局実機だわ
そのメモリ量でよく我慢できますね 忍耐力あるなぁ
>>133 リファラは独特のものに変えています
サポートってこういうのに
きちんとした返事を返してくれるもの?
>>148 実機が現在バージョン2.2のものしか所持しておらずテストができない状態です。
2週間後に実機が届きますがそれまでにある程度仕上げる必要があり、エミュレータをなんとしてでも使いたい状態です。
>151 SDK ManagerのGoogle Play Servicesの所を見せて。
>>152 www.dotup.org/uploda/www.dotup.org4422364.jpg
こちらになります。
>>153 実はアプリ開発初心者でどのようにすれば2.2でも動くのかさっぱりです・・・。
解説しているサイトなどあれば教えていただけると大変助かります。
android java開発でなんか簡単なプログラム作りながら、勉強できるサイトでお勧めある?
androidでこういう文字を表示するにはどうすればいいですか? ¼½¾
タッチパネルで指との接触面の形状とか面積ってどうやったら取得できる?
phonegapってカメラプレビュー取れますか?
うんこって食えますか?
>>155 ひと通り軽く目を通してみたつもりですが、2.2で使えるようにするにはどうしたらいいのか
私ではさっぱりでした・・・。
ヒントだけでもいいのでもし良かったら教えていただけると嬉しいです。
また引き続きエミュレーターで動かせるようにする方法も募集致します。
よろしくお願いします。
エミュを試しに2.3にしてみれば
>>162 適切なエミュレーターがない状態となりコンパイルが通りません。
更にプログラム側のターゲットを2.3.3にしてみるとコンパイルエラーとなります。
>>163 根本的におかしいだろ
マップ以前に基本からやり直せよ
なんでエミュを変えたらコンパイル通らないんだよ お前はエミュでコンパイルしてんのかよ 全く理解せずコピペだけで進めてるからこうなる もう一度開発環境の構築からやり直せ
先生、出来ましたか?
>>165 >>164 失礼、言い方に大変大きな問題がありました。
コンパイル自体は通るのですがその後実行できません。
更にプログラム側のターゲットを2.3.3にしてみるとコンパイルエラーとなります。
プログラム側のターゲットでコンパイルが通らなくなる方と混同してしまました。
公式が配布してるもんで出来なくて、danbroughって人が作ったapk使わないと動かないってんだから諦めろよ そんなん使ってエミュで動かして何になるの
>>169 どうしても一定期間内に成果を出さなくてはいけないのですが、実機が届くまで時間があるため、
暫くの間実機なしでテストをしたいのです。
本当に申し訳ありませんがよろしくお願いします。
舌とかでよければ3cm程出します
コレはヒドい
>>170 作る というのがどこまでを指しているのかよくわかりませんし、
相場もわからないのでもし本気でおっしゃっているのであればメールなどで
よく相談させていただきたく考えています。
よろしくお願いします。
その場で持って帰れる端末買ってこいよ 依頼するより安いし、ここでダラダラ何度も書き込んで回答待つよりマシだろ 時間の無駄
>>174 もう注文済みの端末があるのでなかなかそういうわけにいかないのです…
スレ汚しとなり大変申し訳ありません。
ゆとりっぽいなー
私も新しい白ロムほしいです
>>179 端末に関する予算枠がすでに埋まっていることと、
自分のPCでないためポート447番の開放を行えないため利用が難しいです。
わざわざご紹介いただき有難うございました。
>>180 Androidやるつもりなら端末の1台や2台、自己投資で買ってもばちは当たらんだろ
言い訳ばっかりでやる気がないようにしか見えんわ
アイホンなら解像度一緒じゃねえの
一緒じゃないよ iPhone 3Gの解像度320×480ピクセルだぜ
非情に残念ですが私の打てる手でこれ以上望むのは難しそうなのでここで失礼します。 長々と有難うございました。
そんなこと言わずに頑張って先生
Notificationのアイコンを左でなく右側に表示するにはどう記述すればいいですか?
TranslateAnimationとScaleAnimationを同時に動かすとまともに移動してくれないんですが、どうしたらいいんでしょうか? どうもScaleで縮小しているため、移動距離がどんどん小さくなっていっているような・・・
>>188 ヒント1「TransとScaleは掛ける順番が存在する」
ヒント2「元データと計算用データを分ける」
ヒント3「計算後のデータをさらに次の計算に使い、さらに次の計算に・・・・という使いまわしは誤差が増えてやってはいけない行為」
>>189 AnimationSetにaddする順番を変更したら動きました
ありがとうございました
>>187 言語をアラビア語にする
といけるかなと思ったけどダメだった
ボタンに対してfocasable in touch modeを設定すると、 一度フォーカス当ててからタップしないとonclickが反応しないようになってしまったんですが、 やりようありますか?
りすなー
くりすなとりす
>>195 いえ、端末が実際に届いてからデスマでやることにします。
お気遣いありがとうございます。
TextViewのフォントサイズで プログラムの方から画面のサイズ取得で大きさに応じて決定することはできますが XML記述の場合で、画面のサイズ取得とかそこから計算して文字サイズ決定というようなことはできますか? その場合の記述法はどのような感じになりますか?
layout-sw600dp とか layout-sw720dp のように画面サイズごとにリソースを作り分けることができるので いろんな画面サイズ用にたくさん XML を書く感じになると思います
パースをオーバーライドして、好きなように解釈できるようにした方が楽。
Android4.02でMediaPlayerでoddファイルをループ再生すると音が一瞬途切れる 解決策はありまするか?
oddじゃないoggだた
途切れても問題ない曲にする
NDKでlibogg使う
オッドゥwww
さっさと晒せよダボ
お前に教える情報はねえ
お前ら初めて自力で作ったプログラムってなんだった?
211 :
デフォルトの名無しさん :2013/08/23(金) 12:30:11.05
androidに限らないならphpで作った掲示板 もう閉鎖したけど
後に世界初の研究成果となるデータを処理するプログラム
自前のHTMLかな。 いたずら用で学校のホームページにして怒られそうになったわw
214 :
デフォルトの名無しさん :2013/08/23(金) 13:27:57.83
SQliteについて質問です 【SQliteOpenHelper】 〜省略〜 public void onCreate(SQLiteDatabase db) { db.execSQL("create table list(" + "name text not null," + "unit text" + "category text default 'その他'"); ); 〜省略〜 【MainActivity】 〜省略〜 Cursor c = db.query("list", new String[] {"name" , "unit" , "category"}, null, null, null, null, null, null); 〜省略〜 ただデータベースに入っているデータをTextViewに表示させるプログラムです(もちろん何も入っていなかったら何も表示されない) しかし実行してみると起動時に強制終了し、logcatには"no such column: category"などと書いてあります。 アプリの再インストールなどは何度も試しました 何か原因に心当たりあったら教えてください
create table listの閉じ括弧が足りてない
ありがちなケースとしては 1) 元々 category カラムはなかった 2) その後アプリを修正して category カラムを増やした 3) でも最初作ったデータベースは削除してないから古いまま残っている
217 :
デフォルトの名無しさん :2013/08/23(金) 14:32:12.28
>>215 すいませんどこの括弧でしょうか?
onCreateにはしっかり閉じ括弧あります
>>216 その通りで、途中からカラム追加しました
その際にプロジェクトも再作成したので前のデータベースは消えていると思ったのですが・・・
今テーブルごと削除して、もう一度さっきのプログラムで実行しましたがダメでした
logcatの文章もさっきと変わっていないようです
>>217 db.execSQL("create table list("
+ "name text not null,"
+ "unit text"
+ "category text default 'その他'");
list( の閉じカッコが無いように見えるけど。
>>214 unit textのあとに,ないからcategoryカラム作られてないんだろ
>>219 それもそうだな
閉じ括弧もないしカンマもないし
で、それに気づかないってことはおそらくSQL自体わけもわからずコピペしてるレベルなんだろう
おまけにAndroidに関する知識も浅いと来た
基礎からやり直すべきだな。今後機能の追加をするたびにプログラミングエラーで時間を浪費する様子が目に浮かぶ
閉じ括弧はあるだろ
no such column: category ってことは、テーブルはあるんだろうけど、 このcreate文でテーブルは作成されるのか。 アンインストールして再インストールしているなら、古いテーブルは消えてるはずだし。
>>221 'その他'"); の閉じカッコは execSQL( の開きカッコに対応してる。
list ( に対応する閉じカッコはない。
>>222 〜省略〜の前の行で閉じてるっしょ。
紛らわしい書き方だが。
drop tableすれば安心
227 :
デフォルトの名無しさん :2013/08/23(金) 15:14:41.42
>>225 文字列の外に出てるからSQL文としては閉じれてないよ…
括弧の対応関係すら把握してない子が一人混ざってるけど もしかして質問者本人?
>>228 ああ、そうか。ごめんね。
でもそしたらそもそもdb自体作られんくて別のエラーなるんちゃうの?
>>230 最初からエラーありのSQLでテーブルを作成してた場合はね
SQL文も修正し直しただろうし、その過程で文法的に正しいSQLを実行したら
中途半端な状態ではあるがテーブルは作成されてしまう
なるほどね。
SQliteの質問者です
皆さんのおかげでとりあえずcolumnは追加できたようで強制終了もしなくなりました
数日ここで悩んでいたのですが、さすがにこのミスに気付けなかったのは反省して、
>>220 の言う通りSQliteもあまり理解出来てないので入門書をもう一度読み直すことにします
入門書読むとか以前にこれに数日悩むならその間にやるべきことあるだろうけどな adbで実際にテーブルの状態確認するとか、関数に渡してるsql文を書き出して確認するとか
>>235 デバッガでみれば一発だといつも思うけど、それで解決するような
トラブルを質問する人はだいたいデバッガ使えないしね。
237 :
デフォルトの名無しさん :2013/08/23(金) 17:05:07.74
オラクルともめてたと思うけど、Javaの将来性はどんな感じなん? Object-CみたいにAndroidも独自の言語を採用する可能性はあるのかな?
238 :
421 :2013/08/23(金) 17:13:03.65
oracleが文句言ってるのはDalvicVMに対してなんで、 仮に別言語を採用してもDalvicVMで動かし続ける限りはOracleの追求は止まないだろう
いまさら別言語を採用したところで、今あるコードをすべて捨て去って綺麗さっぱり新しい環境へ移る、ってわけにはいかんだろう 最初から独自の言語を採用してれば、違ったかもね
独自じゃあここまで栄えなかったんじゃ ただ速度はもっと速くできるようだから、そっちは塗りなおして欲しいな
アメリカは裁判は国に不利益になる場合はたとえ違法でも違法側を勝たせるから問題ない ソースはこの前のサムスンVSiPhoneの裁判 裁判所はiPhoneの違法を認めつつも例外処置としてiPhoneの販売指し止めは拒否するとか 意味不明な結果だしたやつ
>>217 プロジェクトを作り直してもパッケージ名が同じなら端末内にデータは残ってる
Java(もどき)をやめるならC#/MonoかJavaScriptだろうね 独自言語はない
Javaと互換性があるJavaもどきを作るに決まってるだろ そうするしかない
XMLでDrawableを丸や四角や任意の画像を上に重ねて その形にトリミングすることってできますか? javaではなくXMLで用意しておいて気軽に使いたいなと
>>243 C#は誰がどう考えてもない。 Wikiで成り立ちとか調べてみろ
Javaって新しいバージョンで簡単に書ける方法模索してるんじゃなかったっけ?
>>245 backgroundをdrawableに配置したxml指定して、shapeとか描画命令使えばなんでもできるでしょ
普通にc/c++のAPI実装していれば ネイティブアクティビティーのでしょう
変換中に書き込んでしまった模様。orz NDKが今2つ使いにくい
251 :
デフォルトの名無しさん :2013/08/24(土) 10:01:36.49
>>246 AndroidのJavaもどきフレームワークはJavaのライセンスが気に入らないが
開発者やリソースを盗みたいという目論見から産まれたもので、
C#/.NETとはよく似てると思うぞww
.NETのクロスプラットフォーム版のMono(UnityもMono)は
スマホ向けのクロスプラットフォーム技術としては現状トップなんだし
んでAndroidのJava風言語は正式名称なんて呼べばいいんだよ 仮想マシンでなくて言語の方
253 :
デフォルトの名無しさん :2013/08/24(土) 10:09:36.12
>>252 GoogleはJava Programming Languageと呼んでる
Javaとは決して呼ばない
コンパイラもjavacだしな
いっそのこと C-(=G)にしちゃいなよ
Ctではないかと
ボタンの背景色をXMLで変更 android:background="#ff0000" をするとボタンが超ミニサイズになってしまう、なんで?
ボタンにはデフォルトのbackgroundが設定されていて、これにはボタンの絵が描かれた画像になっている 自分でボタンにbackgroundを設定すると、そのデフォルト値は置き換えられて自分が指定したものに変わる 今回のケースでは"#ff0000"を設定しているが、これは画像ではなく単なる色だ 画像には最小サイズがあるのだが、あいにく色にはサイズがない つまりそういうわけだ
なるほど。。
android:layout_width="200px" XMLのここの数値に画面サイズを取得した計算式を入れることは不可能ですか?
なぜ、サイズを自分で設定しようと思わないのか
XMLには計算式は入れられないな onCreateで計算してサイズ設定すればいいと思うよ
? だから
>>261 で設定しようと…
コードでですか?
できるだけXMLにしてできないことは最終的にコードでという方法を取りたいです。
つまり
>>261 は無理と考えていいですか?
単純なケースならレイアウトの工夫でなんとかなる場合もあるが 画面を左右に 1:2 の割合で分割するとか
android:theme=""を2.x 4.xのOSのバージョンで変えることはできませんか?
styleを書いたXMLをres-v11とかで分ければいい
OSバージョン別に、画面サイズ別に、端末種類別に それぞれ別々に色々なファイルを用意しないといけない所がAndroidに最新さを感じない ローテクすぎる
>>270 >>それぞれ別々に色々なファイルを用意しないといけない所が
めんどくさいから自分は1個しか使わない
キミはやり方をしらないのかぃ?
PC用で固定サイズで作るタイプだなw
描画部OpenGL使って自分で作れば万事解決
論理デザインって言葉も知らなそう
>>275 業界用語使って偉そうなこと言う素人ですか?
物理デザインって言葉も知らなそう 複雑なアルゴリズムは一度紙にケースパターンを書いて考えるという
だからどうしたって感じだな
androidでノベルゲームを作ろうと思っています。 Android規定の画像サイズ表に掲載されていない キャラクターの立ち絵や背景などの画像サイズはどのように決定すれば良いかご教授ください。
自分がベストと思うサイズにすればいいんじゃね?
Javaもhtmlも最初からフローレイアウトなのに、なんで固定したがるんだ。
エラーはないの止まる ボタンを押すと数が増えるのを表示するだけなんだ ボタンを押すと止まる package makeApplication.free; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class FreeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView)findViewById(R.id.count_view); String cha = String.valueOf( i ); String str = cha; tv.setText(str); } int i = 0; public void onBottonClick(int v) { i++; } }
止まるってなんやねん
onBottonClickの中にtv.setText(str); を入れるんじゃね
リスナー登録もしてないし、止まるんじなくて何も起きていないだけじゃ
日本語がおかしすぎる 外国人? いくら日本語分からないっても、ちゃんと質問しろよ
android:onClickも使ってないのかな
>>286 そうみたいです
すいません
何とかなりました
ありがとう御座いました
290 :
デフォルトの名無しさん :2013/08/25(日) 22:44:28.80
画像は基本svgで作るようにしとけば画面サイズ気にしなくて済む
svg使う場合ってみんなandroid-svg使ってるの?それとも自作?
初歩的な質問させてください。 型変換のメリット?つかう場面?がよくわかりません。 View view; ListView listView = (ListView) view;といった処理をよく見るのですが 何のためにViewをキャストするのかわかりません。 だったら ListView listView = (ListView) findViewById(R.id.listView)とかでいいんじゃないですか? どのサイトを見ても良くわからなくて・・・
一度別の変数に入れてるかどうかの違いで、下の例もキャストしてるじゃん
>>292 Listview非依存のViewで定義されてるメソッドは、キャストする前に呼んだほうがわかりやすい。
コンパイルしたら同じ。 読み手にとって分かりやすい記述かどうかの違いで、 初心者が見るサイトだと複雑な記述は混乱を招くから、単純化して書いてたりするだけ。
296 :
デフォルトの名無しさん :2013/08/26(月) 12:53:10.53
ちょっとリフレッシュレートの事で質問なんですけど 自分の周りの人らのスマホでフルパワーでゲームの描画ロジック回してみると 全部60fpsが上限なんです(一番古い機種でOSのverが2.3くらい)。 もう2.0以前のOSはカバーする気はないので 今後、登場する新しいOSで、上限が60fps以上のものが出る事があるのか気になってます。 (というかfpsはハードウェア依存?) どうなんでしょうか?
>>297 既に公開してる多くのアプリが
フルパワーで回してシステム側の垂直同期に頼って
fps:60くらいで調整してるので
今後もそのままなら、修正しなくても大丈夫なのかなという事です。
もし今後(現在でも?)、fps:60以上のものが出回るのなら
修正しないといけないので。
あるよ
むしろゲームでFPS60も回してるやつあるの? コンシューマーですら30で足りるのに、ソーシャルで60回す必要ってあるのか…。
動体視力が高い相手には高いFPSが要るね 例えば犬とか
>>301 タブレットでゲームしている犬想像して吹いたwwww
ネコならいるけどね。
犬猫用のアプリを開発しているスレはここですか
画面をぼこぼこにされる未来がみえる
307 :
298 :2013/08/26(月) 15:03:28.79
みなさんレス遅くなりました! やっぱ垂直同期依存はマズイのかもしれないですね。 次に更新する時、一応、ウェイトかませる事にします!
>>300 古いけどサターン版の
VF1とVF2やると全然動きが違うよ。
前者がFPS30
後者がFPS60
あとファミコンとかスーファミの時代も
アクション系は基本FPS60だったような…
すいませんが、教えてください。 ステータスバーを下ろしたときに表示される通知をRemoteViewsを使ってカスタマイズしようとしています。 カスタム部以外は出来るだけOS標準のレイアウト・スタイルを使いたいのですが、よい方法ありますでしょうか? 現状TextViewのStyleのみ下記で設定出来てます。 style="@android:style/TextAppearance.StatusBar.EventContent.Title" style="@android:style/TextAppearance.StatusBar.EventContent" 全体のレイアウトやImageViewの大きさや背景も標準に揃えたいです。
俺はAndroidの各バージョン(1.5から4.1まで)のソースから通知のレイアウトや画像をパクってきて バージョンに応じて使い分けるという面倒なことをした メーカー独自カスタマイズには対応できないがそのへんは諦めた もっといい方法があるなら俺も知りたい
SurfaceViewを用いて2Dアクションゲームを作成しています。 そこで背景(320×480 png mdpi)を画面外合わせ5枚描写した場合、 20fps以下のパフォーマンスしか得られなかったのですが、 背景を毎フレーム5枚描写することは現実的ではないのでしょうか? OpenGLを利用する他、描写を高速化するノウハウがあれば教えていただきたいです。 背景を1枚にした場合は40fps以上を確認したため、原因は背景だと考えられます。
>>311 SurfaceView自体そこまでパフォーマンスがでるViewじゃないです。
GLSurfaceViewを使って描画用GLThreadとプロセス用のThreadとActivityのMainThreadの3つに並列処理すれば、
ゲームに耐えうるパフォーマンスを発揮できますよ。
313 :
309 :2013/08/26(月) 21:46:52.77
>>310 情報ありがとうございます。
面倒だけどlayout-v11とか作って頑張ってみます。
>>311 原因が背景なら
背景画像を軽いのにすればいいのでは?
htmlでいうcontentEditableのように Layout内の任意の場所にテキストカーソルを表示する方法はありませんか? 編集がしたいわけではなく、単にカーソルを表示したいだけです。
アプリが死んだときにcore吐かせる方法ってある?
>>315 edittextを動的に表示すればいい
>>317 タップした位置にテキストカーソル以外を透過したeditTextという感じですよね?
それでやってみます。
ありがとうございました。
319 :
デフォルトの名無しさん :2013/08/27(火) 17:16:41.96
openGLでViewportを用いることによって、 Surfaceのサイズを拡大して全画面表示にすることができると知りました。 その場合のタッチ座標は拡大前の状態のものなのでしょうか?
やってみればええねん
321 :
デフォルトの名無しさん :2013/08/27(火) 17:33:18.25
やってみたいとこなんですが、iPhoneしか持ってないんです。 エミュレータもOpenGLはうまく起動しないみたいなので・・・・・
それじゃ知ったところで開発できないのでは?
誘導されて来ました androidのゲーム開発には何を使えばいいの? 今はeclipseでhelloworldからボタン配置ボタンに動作を付けることくらいしか出来ないけど 目標はアプリのpewpewみたいなジョイスティックがあって2dなアプリ unityとか勉強するといいのかな
まずはコードの一行でも書いてからおととい来やがってくださいませ
>>323 「Android ゲームプログラミング」でぐぐってみるといいかと
helloworldとは根本的に作り方が異なる
あとゲームプログラムは、ジャンルにもよるが、基本的には
数多くある種類の中でも上級側のプログラム技術の塊なのでそこは覚悟したほうがいい。
例えるならHelloWorldがABCD英語習い始めた中1で
ゲームプログラムは大学入試レベル英語
大学入試と違ってできたからって何の役にも立たんがな
>>325 >>例えるならHelloWorldがABCD英語習い始めた中1で
>>ゲームプログラムは大学入試レベル英語]
そんな小さいレベルの差じゃねーだろ
>>ゲームプログラムは英語圏の大学留学卒業レベル位じゃねーの
ボタンとかチェックボックスをウィジェットと呼ばれてますが、 そっちではなく、Homeに有るアイコン状のものをどうこうするアプリ作りたいのです そっちのウィジェットはなんと言って区別してるのでしょうか?
本屋に行って本買ってきた方がいいよ
layoutに配置してるのは全部Widgetで ホームのウィジェットは正式にはAppWidget
332 :
329 :2013/08/27(火) 22:04:51.16
特定のview全体を別のレイアウト(例えばLinerLayout)で囲う方法はないですか?
方法はあるだろ
>>334 Viewの複製ができれば複製したView全体を新しいレイアウトに突っ込めばいいんですが、
複製はできないみたいだし、parentの変更も見つからないし(こちらは英語力不足かも)、
できない可能性があるんです。
やりたいのがよくわからないけど普通にこういう感じじゃないの? <LinearLayout> <ImageView/> <LinearLayout> <TextView/> </LinearLayout> </LinearLayout>
動的でも方法はあるだろ。 何がしたいのかはわからんが。
一番端的にいえばfinalじゃない形でView型のObjectを取得したいんです。
動的でもXMLで書いた場合と同じような形になるようにプログラム組めばいい 一個ずつ初期設定しなきゃだけど LinearLayout1にLinearLayout2をaddしてLinearLayout2にTextViewをaddして 同じレイアウトを動的に繋げていきたいなら 基本形の親Viewと子ViewのXML作っといてinflateして繋げていくとか
>>340 やっばりそうなりますよね。
ユーザー側が任意に作ったレイアウトをごにょごにょしたいので、うまくできないわけです。
ユーザが任意に作ったレイアウトって他のアプリのレイアウトってこと?
数式を綺麗に書けるツールです。 一応使われているものに制限があるため、 全部ツリーウォーカーで取得するって手段もありますが...
正直何をしたいのかが分からん
>>344 LinearLayoutをLLと書きます。
<LL>
hoge
</LL>
という描画が既にされているとします。
hogeは任意のviewGroupです。
これを
<LL>
<TextView />
<LL>
hoge
</LL>
<\LL>
に置き換えたいのです。
>>345 最初っからレイアウトは下で作っといて描画しないviewはgoneしとくとかそういうんじゃダメなの。
>>345 <LL>
hoge
</LL>
の部分が取れるんだったら
それを適当なところにぶち込めばいいんじゃないの?
他のアプリから取ってくる、とかは無理だけどさ
>>346 その都度描画するというわけですか...
重そうなので避けていましたが、実用に足るか一度やってみます。
>>347 取得はできても、addviewができないんです。
諦めろ
ViewがViewGroupにaddView出来ないのは何らかの理由があるわけだが どこからどうやってViewを取ってくるかみたいな説明は全くなしで 追加できません、って言われたら、諦めろとしか言いようがないわな
>>351 描画済みのものをgetChildAtなどで取得、
別のレイアウト内に入れる
という手順です。
もしかしてgetChildAtで取得したビューをそのまま別のところへaddViewで追加してるとか
それやったらお前ちょっとremoveViewしろよってエラー出るはずだけどね・・・
>>353 はい、キャストはしてますが。
もしかしてやり方があるのでしょうか?
>>354 ありがとうございました、できました!
私の無知が原因でスレを汚してしまい、すみません。
無知っつーか説明が下手
答えはいつもログキャット
facebookの様に、左端からスワイプでメニューを出すテンプレートってどこかにありますか? それともfragmentで実装するとあのような動作になるのでしょうか? それとも遷移アニメーションもしていしてる?
ある座標に置いてあるdrawableやBitmapを調べるAPIと言うのは存在しないと言うことでいいですか? むかしC++のセガの本を読んだ時もそう書いてあったと思うのですが
Surfaceとかなら描画位置を覚えておけばいい。 ViewならView.getLocationInWindowを使えばいい
OutOfMemoryエラーって端末全体のメモリ量によるの? それともアプリごとに振られた領域によるの? 画像扱ってるとしょっっちゅう出るんだけど、こちら側の対応に限界がある気がする
366 :
デフォルトの名無しさん :2013/08/28(水) 11:54:33.69
LinearLayoutに SurfaceView 他のView と追加してみるとSurfaceViewの下に 他のViewを追加してもSurfaceViewに押しつぶされてまったく見えません。 weightとかもありますがイマイチ比率が上手く行かず困ってます… たとえば、他のViewが縦100の時、SurfaceViewが 残りの画面の大きさにピッタリなるようにしたいという事なのですが。 LayoutParams辺りで何か良いパラメータがあるんでしょうか?
>>365 端末全体のメモリだと思う
1.6の256MBしか積んでない端末だとエラーが出たときあった
最近じゃ256MBの端末はほぼ見かけないと思うけど
まだそこそこ出回ってる512MBの端末ででるなら実装見直したほうがいいかも
>>368 わりと最近の端末からエラーレポートが届いてるから、下手したらメモリ1G端末の可能性もある
300x150の画像10枚とかメモリに持つだけなんだけどなー
371 :
366 :2013/08/28(水) 12:29:37.85
LayoutParamsで (int)(HEIGHT * getResources().getDisplayMetrics().density) とかheightに与えてやればいいのだろうか… 他の端末だと大きさ変わらないだろうか… 誰か…
普通にlayout_height="wrap_content"のLienarLayoutとsurfaceViewに分けるだけじゃだめなのかい
373 :
366 :2013/08/28(水) 12:47:43.30
>>372 それは
LinearLayout(layout_height="wrap_content") ←この中に下の二つを入れ込む為のもの
SurfaceView(layout_height="wrap_content")
他のView(layout_height="wrap_content")
という事ですか?
SurfaceViewにlayout_height="wrap_content"を指定した時点で
それが下のViewを押しつぶしてしまうんです…
>>373 そらそうだろ。そうならないようにweightやらなんやらがあるわけで
375 :
366 :2013/08/28(水) 12:58:02.87
>>374 そのweightやらなんやらの指定の仕方を少し教えて頂けませんでしょうか?
weight使うとなんか比率が上手くいかなくて…
>>366 にも書いてますが
>>365 いちアプリが全メモリを食いつぶさないよう、使えるメモリの上限値があるが、具体的な値は端末によって異なる
Runtime.getRuntime().maxMemory() で調べれる
画像は
・必要な (ただちに画面内に表示しなければならない) 画像だけを読み込む
・必要なくなった (画面外に消えた) 画像は解放する
・BitmapFactory.Options の inSampleSize を設定して必要最小限の大きさで読み込む
・読み込めなかったら inSampleSize を1段階上げてひとまわり小さく読み込んでみる
でだいたいは対応できるけど、古い端末だと苦しいね
>>366 android:layout_height="0px" android:layout_weight="1" でどう
>>375 比率が上手くいかないがどういう状態かわからんと何とも言えないが
379 :
366 :2013/08/28(水) 13:24:43.59
>>377 これだと画面の半分ずつになりますね。
機種によって画面の解像度が違うから
やっぱweight駆使してどうにか比率決めるしかないのかな…
>>378 例えば、その他のViewが100pxの場合に
SurfaceViewを残りの画面一杯に常になるようにしたいという感じです。
380 :
デフォルトの名無しさん :2013/08/28(水) 13:34:31.64
ド素人っすけど ハローザワールドの次は何作ればいいすか?
こんばんはワールドとか
AndroidなんてHello worldできるなら80%はマスターしたようなもんだよ
384 :
デフォルトの名無しさん :2013/08/28(水) 14:12:39.44
>>382 よしきた
カメラやるっす
ところで、ウィンドウズのSDK使ってるのだが
カメラがnoneになってた気ガス
一般的なウェブカメを使えるように設定できるの?
それともwindowsでの開発時は心眼でコーディングして
実端末に持ってきてから動作確認するしかないの?
>>364 widgetではなくdrawableとかを調べたいのだが
getLocationInWindowは使えないような気がするのだけど
真面目に答えろよ
>>365 そこら辺不明だよね
>>367 ん?asetに素材ぶち込めば回避できるってこと?
>>368 実はからくりあって昔のほうが出なかったりする
>>369 わかる!その気持ち!
>>376 大体そんな感じだと思ってたけど、色々実験して試してるどうも仕様が怪しい?感じなんだよな
つーわけで、ここらでOutOfMemoryについてそれぞれの知識出し合って
この強敵の正体少しでも見抜いてみない?(まとめリンクあるなら誰か教えてほしい)
まずは言い出しっぺの俺から先陣切るぜ
388 :
デフォルトの名無しさん :2013/08/28(水) 16:13:57.52
上で話題あがってるoutメモリーの件 Cが本職でSDKド素人の俺の考えだけど mallocして画像データ入れて使い終わったら即freeするイメージでもoutメモリーが出る?
ここからは自分が実験した結果レポみたいなのを書いてみる。 結論からいくと「OS別、国産端末と海外産端末別、携帯かタブレット別」で分かれてるっぽい <念のため予備知識> 1、maxMemoryは端末搭載のメモリー数ではなく、1アプリに使用が許されてるメモリー上限。 取得すると「60000」みたいに値が取得され、単位はKB。左例の場合60MBという事になる。 2、maxMemory値はバラバラではあるものの多少共通点あり。 次のような傾向が見られた。 ・OSバージョン別で値が分けられてる傾向。 Android4.1.2 → 65536 (試した機種。SC-03E、N-05E、205SH、203SH、200SH) Android4.2.2 → 131072(試した機種。F-06E、F-07E、202F、206SH) Android2.3 → 触れる端末なしにつき調べられない。情報求む。 Android2.2 → 24576(試した機種。001HT) ※注意(下記参照)、国産機種情報求む。 以上の結果から、「たぶん」キャリア別でも機種別でもなく、ある程度はOS別なのでは?という雰囲気あり。 ただし国産か?海外産か?でも値がバラつく傾向あり 上の表Android2.2の値はあてにはならないかもしれない。 ・・・ということで ↓ 3、国産端末か、海外産端末かで微妙に値が変わってくる可能性高し ・Android4.2.2 → 98304(試した機種。202K) 4、スマートフォン(携帯電話)か、タブレットかでも違いが出る ・EveryPad(Android4.2.?)はMaxMemory値が98304だった この値は上記「3」の値と偶然一致。 もしかしたら海外産のAndroid4.2.2の標準値なのか? ・SGP312(Android4.1) → 131072
そして
>>376 で言われてる「maxMemory()」の有効性なんだけど
どうも怪しい。
maxMemoryが60MBだったとしても20MBつかったらOutOfMemory起きる事があった
俺の場合だからやり方がまずってる可能性も否定はできないけど。
そこでもう1つ、アプリに現在割り当てられているメモリー数を取得できる「Runtime.runtime.totalMemory()」というものがある。
この値は同じアプリでも、機種によって非常にバラつく。同じアプリなら値がほぼ横ばいになるはずなのに…。
インストールしてボタン押すだけのアプリでも3000〜12000まで非常にバラつく。
「Runtime.runtime.freeMemory()」の値が0になると「totalMemory()」は増えていく。
で、ここからはまだ確信のない話になるのだが
maxMemory()の上限を超えるとOutOfMemoryというは当然でわかりやすいからいいとして
totalMemory()が現在11MBとかになってる時に、少ない容量のメモリー確保する場合は問題なく
ある程度一気に大きいメモリー数(3MBとか)増やそうとしてもOutOfMemoryが起きるのでは?と今思ってるんだよな。
何故かというと
ボタン押すと「Bitmap.createBitmap()」で任意サイズのビットマップを作る簡単なプログラムを作り
maxMemory()=131MBある機種で、ボタン押すと3MBくらいのビットマップ生成には耐えるが
8MBくらいの生成にはOutOfMemoryになるんだ。
機種によって結果は異なるから、まだ確信つかめずう〜んって感じの情報だけど。
Windowsのファイルシステム問題みたいのでも存在してるのかな?
FAT32だと1ファイル4GBまで上限とかあるあれみたいに。
あとこれ
>>368 は画面解像度に比例してる。
何も対策とってない場合、明らかに最新機種の方がOutOfMemory起きやすい。
理由は昔の端末はディスプレイサイズが480x800とかだったけど
最近のは1200x1920とかなので同じ画像表示でも単純に表示するだけだとメモリー消費数が
最近の端末は半端ないため。
480x800=384000 (384KB)
1200x1920=2304000 (2.3MB)
maxMemory()の上限あがってるから理論上は大丈夫なはずなのに
上で説明したtotalMemory()問題みたいなのがあるので結局どんどんシビアになってるんじゃないかと感じてる
ダラダラとかいてしまったが俺からはこんな感じです
logcatしてみればだいたい原因は解るもんだけどな
すまん補足・・・・
>>391 の
>>368 へのアンカーは
>>365 が正しかった
また
480x800=384000 (384KB)
1200x1920=2304000 (2.3MB)
の計算(論理値)はわかりやすいようにDensityと画像フォーマット(ARGB_8888とか)をわざと省いてるあたいね
なので実際は
480x800=384000
384000x4(ARGB_8888=32bit=1677万色の場合) = 1536000
153600x1.5(Density240=mdpi端末の場合) = 2304000 (2.3MB)
計、スケールなしでDotByDotの場合の480x800画面いっぱいに表示する1画像容量2.3MB必要
1200x1920=2304000
2304000x4(ARGB_8888=32bit=1677万色の場合) = 9216000
9216000x1.5(Density240=mdpi端末の場合) = 13824000 (13MB)
計、スケールなしでDotByDotの場合の1200x1920画面いっぱいに表示する1画像容量13MB必要
でよろしく
再度すまん 両方とも1.5倍にする必要はないわ。 ちょっと疲れてるもよう。頭冷やしてこよう。
こんだけ画像のメモリ管理が大変なのに 画像バリバリ使ってるunityはよく管理してると思うよ 何が違うわけ?
あれはGPUの方に画像データとかを丸投げしてるんだよ。 …ん? もしかして解決策?
GPUだってアプリケーションに割り当てられるヒープメモリは決まっていますよ。
DalvikのGCはいまだにマーク&スイープっぽいからヒープが断片化するかもしれない 小さなブロックは確保できても大きなブロックは確保できない可能性はありうる
android4.3 で SoundPpool ループ再生が出来ない(最初に1回しか再生されない) バグがあるんだけど、 2,3秒の効果音なんでmediaplayerは使いたくないし、 4.3以下のバージョンでは問題ない。 google側で直してくれるのを待つしかないのかな?
ところで誰も触れていないようなので つ android:largeHeap="true" あと、jniのnative側で確保するメモリはアプリのヒープとは関係ない。
うおおandroid:largeHeapはじめて知った! ありがとう!
>>399 断片化か、その発想はなかった
>>401 そんなものが…
手の1つとして俺も覚えておく
にしてもMaxMemoryが130MBあるのに20MBちょっとで落ちるのがどうしても納得いかん
こればかりは地道にテスト繰り返すしかないっぽいもんな
MaxMemoryぎりぎりまでメモリー使用したことある人っている?
404 :
デフォルトの名無しさん :2013/08/28(水) 19:53:27.82
android.media.MediaPlayer を使用して動画再生アプリを作成しようとしています。 しかし、ターゲットとなるAndroid端末のファームウェアの品質が低く 繰り返し再生(.setLooping)さえまともに動作しないので、 アプリの完成が危ぶまれています。 どのような解決方法があるでしょうか。ちなみに、この問題に 対処するための工数はほとんど確保できない状況です。 よろしくお願いします。
あやまる しらばっくれる 逃げる
動くターゲットに変更するしかないじゃない
>>404 Android1.6ならあきらめるべき
いまさら1.6使うのはWin95使うようなもん
Android2.2(API8)以降ならMediaPlayerまともに動くよ
ソースは俺
真ん中にキャラクターがいてタップするとランダムでセリフが表示されるような単純なアプリ作りたいんだけど、どんな感じの行程になりますか? 調べようになんて検索していいのかわからんもので・・・
基礎から勉強しなさい 何も理解しないまま場当たり的に作ってもどうせすぐ破綻するから
>>361 最近NavigationDrawableってのを下位互換付きで公式が用意してくれたよ
NavigationDrawerだったわ
>>409 ・「Android 開発環境構築 初心者」 → 開発環境インストールを学べる
・「Android はじめてのプログラミング」 → 今後必要なことを色々学べる
・「Android 実機でテスト ADB」 → スマートフォン本体をPCに接続してアプリ実行結果を表示するやり方を学べる
・「Android 画像の表示」 → ImageViewおよびビットマップ、リソースIDについて学べる
・「Android Button onClick」 → タッチパネルに触れたときのイベント通知と操作について学べる
・「Android TextView」 → セリフ表示について学べる
体に触れると「やん♪もぉ〜変なところ触らないでよぉ///」とかいう感じのエロゲーでも作る気かいw
415 :
デフォルトの名無しさん :2013/08/29(木) 00:27:42.21
eclipse 4.2 juno入れたらAndroid プロジェクトが無くなってAndroidアプリケーションプロジェクトがあるんだけど これらは同じと考えておk? 最近Android開発初めてネットで調べてもAndroidプロジェクトで新規作成してるサイトしかなくてちょっと不安です
416 :
315 :2013/08/29(木) 00:32:23.73
>>315 です。
EditTextをクリックした際、キーボードが開きますが、これを抑制したいです。
inputTypeを変更することで、キーボードを表示されなくすることはできますが、
この場合、テキストカーソルが表示されず、
元の目的を達成できません。
テキストカーソルは表示されたまま、キーボードのみ抑制する方法はありませんか?
>>413 さん
409です。
ありがとうございます(´ω`)やってみます。ちなみにエロいのではないです(笑
猫になんか言わせようかなーって。姉の誕生日にあげようかと企てております!
410さんも私にですかね。ありがとうございます。基礎から真面目に頑張ってみますm(__)m
>>417 ならAndroidネイティブじゃなくてHTML/CSS/JavaScriptで作ったほうがいいぞ
腐るほど情報あるし比較的簡単だし
ガチでアプリ開発者になるつもりがないならその方がよっぽど役に立つ
>>416 自己解決しました。
EditTextにonTouchListenerをセットし、
trueを返すことでキーボードが出なくなりました。
しかし、これではフォーカスが移動しないため、
requestFocusでフォーカスを動かした後、
文字幅とタッチした位置から何文字目にテキストカーソルを入れればいいか判断し、
setSelectionでカーソルを移動させました。
>>418 さっそくググってみました!色々あるんですね(´ω`)勇気出して聞いてみてよかったです
また遊びにきたら構ってやって下さい(´ω`)ノシ
>>414 あー片方だけなんですか。
この辺りイマイチ分かってないので自分でも調べてみますね。
ちなみにあれこれ弄ってどうにか
大体の比率に調整する事は出来てました。
>>419 edittextが複数ある場合、edittextごとにそんな面倒な事をやるの?
直接IME制御すれば簡単に出来るけどね
424 :
404 :2013/08/29(木) 08:31:44.89
>408 中国人に作らせた最新のタブレットです。 Android4.1.1
動かない物は動かないんだからあきらめろよ
そのファームウェアのせいなんじゃないのかね
日本人に対するイヤガラセだな
>>428 自分のアプリでやってる
フォーカスが入るとかってに立ちあがってくるのがウザイから...
logcatに出た赤字の最初の3行だけ書いてみ
ミスってダウンロードパスつけちゃいました・・・ [aaa]です><
なんか、ドリフのギャグみたいだな
public class HelloWorldActivity extends Activity implements View.OnClickListener{ Button btn = (Button)findViewById(R.id.Button01); public void onCreate(Bundle savedInstanceState) { 無茶スンナ findViewByIdが使えるのはsetContentViewしてからだ。
>>436 ありがとうございます!!
public class HelloWorldActivity extends Activity implements View.OnClickListener{
Button btn;// = (Button)findViewById(R.id.Button01);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_world);
btn = (Button)findViewById(R.id.Button01);
btn.setOnClickListener(this);
}
//インターフェイスを実装 implements OnClickListener
public void onClick(View v) {
// TODO 自動生成されたメソッド・スタブ
btn.setText("Hello");
}
}
これでいけました!
助かりますた
>>429 横からだが、直接制御ってどういう方法なんだろう
ちょっと見当がつかないんだが概要だけでも教えてもらえないだろうか?
別件だけどIMEに変換予測を出させないとかも制御できるかな?
そういう挙動してるアプリもあるんで出来そうなんだが同じような手法なのかな
>>438 大層な事じゃなくて、オン・オフだけ
どこかにサンプルがあるはず
>>438 追加
自分には関係なかったのでうっちゃったけど、
変換予測無し ってのも見かけた覚えがある
変換予測のONOFFを変更できるプロパティは確かにあるね trueかfalse入れるだけ。 俺も名前までは忘れた
マニュフェストの設定の話?主語が抜けてて造語で語るとWで意味不
ところでスマホメモリーについて 俺自身が根本的に曖昧な知識だなという事に気づいたんだが 誰か知識を貸してくれないだろうか・・・ ちょっと説明が難しいので上手く伝わるか自信ないが 俺、今までメモリーというのは電源切れたら内容が消えちゃう装置の事を思っていたんだよね だからスマホの記憶領域(装置)が、内蔵ROM(RAM?)、SDカードで それプラスPCのDIMMみたいなメモリーが存在し、 ヒープ領域ってこのDIMMみたいなメモリーに展開されてると思っていたんだ。 でもさ、これひょっとして、内蔵ROMの一部がWindowsの言うところの仮想メモリーに割り当てられていて この仮想メモリーの事をメインメモリーとして扱ってる感じなのかな? ノートPCのオンボードVRAMと同じ扱いなんだろうか? 仮に後者だとしたら、SDが付いてない本体の場合アプリの保存領域と共有されてる事になると思うので 搭載内蔵ROMが500MBあったとして 450MBあるゲームアプリapkをインストールした場合、メインメモリーが50MBしか使えない事になるよな? これならMaxMemoryが60MBあるのに20MBを確保して落ちるとかいう動作も納得がいく。 そしてこの場合MaxMemoryは固定された設定値(論理値)で 今現在、この瞬間のメモリー残りは考慮されていないって事になると思うわけで・・・。 どうなんだろう? 個人的には内蔵ROMとは別に、専用DIMMがついてる仕様の方がうれしいんだけどね
EditText:editableは好ましい動作だったんだが4.0以降挙動が変わっちゃったからな。 初期フォーカス時に表示しない、とかフォーカス外れたら非表示とかはよく見るんだが フォーカスした上でキーボード非表示はどうにも見つからん。 調べ方が甘いんだろうとは思うのだけど。 予測変換については提示漏れで申し訳なかったが、EditTextでなくNativeの場合の話。 キーボードは出せるんだけど予測が出ちゃって直接キーとして拾えないのがイマイチだったのよね。 直接制御できるならその辺りも出来るかなと思ったんだけど
ちなみにこの記事の下の表見て上のような疑問に気づいたわけ
http://s-max.jp/archives/1338089.html 機種名 ROM容量(初期空容量) ROM容量(トータルメモリ) RAM容量
iida INFOBAR A01 1.10GB 2GB 512MB
Xperia acro IS11S 302MB 1GB 512MB
G'zOne IS11CA 302MB 1GB 512MB
AQUOS PHONE IS11SH 1.07GB 2GB 512MB
AQUOS PHONE IS12SH 1.05GB 2GB 512MB
REGZA Phone IS11T ― 1GB 512MB
それともROMじゃなくて右のRAMってのがメインメモリーなのかな?容量が統一されてるし。
だとRAMは一体本体のどこで確認でき、どのAPIで取得できるんだろうか?
謎は深まるぜ…
>>445 ,447
俺が単にメモリって言うときは電源が切れたら消えるメインメモリ、DRAMのことを指してるね
電源が切れても残るのはストレージとかフラッシュメモリとか俺は言ってるけど、単にメモリとかRAMとかROMとかいう人もいる
何のことを言ってるのか実に紛らわしいね
フラッシュメモリとメインメモリは別
Androidにはスワップファイルはないのでメインメモリを使い切ったらおしまい
ちゃんとしたAPIは知らんけどカーネルはLinuxなので/proc/meminfoとかそのへん覗けばいろいろ見れる
スマホのスペックでストレージをROMって言うのはどこから来てるんだろうね。 ぜんぜんROMじゃないと思うけど。
FlashROMとか聞いたこと無いのかな
>>448 わかりやすい説明をありがとー!
おかげでRAMと呼ばれてるのがメインメモリー(PCで言うDRAMやDIMM)ってことがわかったよ
meminfoも調べてみる
>>449 紛らわしいよな…
452 :
デフォルトの名無しさん :2013/08/29(木) 18:22:46.03
>>448 初心者だけど、ちょっと気になったのだが
アンドロイドってLinux上で動いてるなら、メインメモリー使い果たしたらスワッピングしたりしないの?
んで取得するメモリは512とかのRAM領域じゃなく、1G以上あるROM上の仮想メモリー?
>>450 ぐぐったらフラッシュロムって言い方もあるんだな。
フラッシュかフラッシュメモリしかしらんかったわ。
>>452 スワップファイルが設定してあればね
root化すればできるかもしれんが、やったことはない
/proc/meminfoはRAMの情報
FlashROMは書き換え回数制限があるのでSWAPなどには不向き(昔よりは多くなったけど) WindowsではReadyBoostに使ったりするけどキャッシュ的な方法なのでSWAPなわけではない
>>455 かなり昔の話だが、
同一箇所RW20万回 って書いてあった覚えがある sandisk 4mbの頃
今はどうなんだろう?
SurfaceViewってゲームを作るのに向いてますか?
はい
あんだって!?もっぺんいってみろや!
UnityかHTMLにしとけ
>>447 所謂RAMだけどVRAMていうのも含まれてるから実際には512MB端末なら多くて280MB使えればいいほう
タスクの優先順位のADJの値とOutOfMemoryでOS側から管理されてる
ROMというのはシステムとデータ格納スペース出来る本体内蔵のFlashメモリーのこと。
PCでいうHDDやSSDに相当する部分で外部記憶装置としてSDカード
俺等でぃべろっぱーが気にしなくちゃいけないのはGCとかVMHeapだからRAMとかROMはそんなに関係ないよ
463 :
デフォルトの名無しさん :2013/08/30(金) 00:44:12.00
>>462 そのVMheapがROM領域なんじゃないの?
Linuxなら実メモリー上にヒープ領域は取らないはずだよ
>>440 本当にすみませんが、
詳しく教えていただけませんか?
書き込みを頂いてから調べたのですが、
結局見つからずじまいで...
>>463 >>462 とは別人だけど、VMheapってOSのヒープじゃなくてDalvikの事でそ?
それと通常のヒープでも実メモリからも当たり前に取ると思うよ。
466 :
デフォルトの名無しさん :2013/08/30(金) 03:04:02.19
主に数字などを入力するためのUI部品で+と-が付いてるやつってなんていう名前ですか?
ナンバーピッカー
ぴっかーちゅうー!
>>457 >>今はウエアレベリングがあるから、書き込みが1カ所に集中する訳じゃない
これは昔からだよ
SurfaceViewを使用したゲームアプリを 作ろうとしているんですが、 アプリ起動直後に画面タッチを行うと 反応が遅れてます。 アプリ起動→アニメーション始まる→画面タッチ →反応せず→数秒後にタッチ時の処理が走る。 といった流れになってしまいます。 onTouchEvent()の最初でログを出してみていますが、 それも遅れてくるためonTouchEvent()も遅れて呼ばれているようです。 どこを確認するべきでしょうか? アニメーションは起動直後に動いているので、画像の読み込みで 処理が重い等は無さそうなのですが。
>>470 Activity#onTouchEventをとってる?
SurfaceViewでタッチ判定をとるなら、SurfaceView#onTouchEventをとらないとだめだよ。
起動時は裏方で何かやってるのかもな原因究明にはならんが 起動直後スタートではなくタッチしたらスタートにすれば
baselineAlignedChildIndexにバグがある...
Activityからserviceを起動してActivityを終了させても serviceが動くようにしたいんですがタスクマネージャーでActivityをkillすると serviceも止まってしまいます。どうすればいいでしょうか?
476 :
デフォルトの名無しさん :2013/08/30(金) 17:19:15.25
pthreadじゃなくfork,exec使えよ とか言ってみる
ふと思ったんだけど異常に長細い画面や逆に正方形の画面の端末って見たことある?
478 :
デフォルトの名無しさん :2013/08/30(金) 20:49:54.04
>>471 SurfaceView#onTouchEventでやっているのですが、この症状です。
>>472 その発想がありましたか!!
早速前画面を追加してやってみます!!
479 :
デフォルトの名無しさん :2013/08/30(金) 21:04:28.70
OpenGLでゲーム製作をしており、アスペクト比を固定するために両脇に黒い余白を設置しようと考えています。 そこでglViewportを画面中央に設定したのですが、viewportの外の領域にもviewの一部が描画されてしまいます。 この場合Viewportを仕様せずに毎フレーム画面外を黒で塗りつぶすしかないのでしょうか? 例 GLSurfaceViewを全画面に作り、 (0,0, 1280,720) 中にglViewportを指定しました。 (120,120, 500,500) -----------GLSurfaceView-------- | | | | | |ゲーム画面(viewport)| | | | | | --------------------------------
Unity使え
Unityって見たらandroid有料だし Eclipseからの自由な作成できないじゃん
>>482 無料だよ。ただし収益年1000万以下のみ
EclipseってかJavaベースで作れないのは痛い。だから手を出せない
484 :
デフォルトの名無しさん :2013/08/31(土) 03:12:29.68
Android4.0以前の旧バージョンのNumberPicker使いたいんですけどどうすれば使えるようになりますか?
>>485 Javaで書けないとJavaのライブラリ使えないよねって話
広告会社から渡されるAndroidライブラリも、SDKマネージャから取得できる課金ライブラリも使えない
Javaのライブラリ使えたとしても、その手のライブラリがUnityと共存できるとは限らないけどね
>>488 まじで?UnityからJavaを呼び出せるの?
広告会社のライブラリをレイアウトに追加できるの?
>>489 できるよ
いろんな人がやってるので出来合いのプラグインも情報もたくさん
491 :
デフォルトの名無しさん :2013/08/31(土) 09:10:28.15
>>479 です
atelier-yoka.com/dev_android/p_main.php?file=apigl10glviewport
このページのように黒枠を追加したいと考えていますが、
atelier-yoka.com/dev_android/p_main.php?file=apigl10glscissor
このようなglScissorを使った後のような画面になってしまいます。
2Dのゲームで描画に用いているのはglDrawTexiOESです。
どうにか直したいのでアドバイスをいただけないでしょうか?
492 :
デフォルトの名無しさん :2013/08/31(土) 09:29:04.79
Androidで歯科のレセコンつくってるんだけど動きがモッサリでどうしようもない Webアプリの速度を上げる方法をおせーてエロい人!
>>489 JavaからUnity呼び出せないと意味ないと思う
Unityがベースになってるのなら何のためのライブラリか
Unityがベースで、そこからAndroidにもWindowsにもiPhoneアプリにも出力できる みたいなもんだと思ってた
>>491 ビューポートもシザーも全画面に設定した状態で画面をクリアし、
それからビューポートもシザーも画面中央に設定した状態で描画すればいいのでは?
Unityってツクールだろ エセプログラマのためのツールだろ
>>492 WebView使ってる限りアプリ側で早くしようがないだろ
Web側で無駄を削るか、自分でHTMLレンダリングする
Unity使いをプログラマーと呼べるのだろうか
500 :
デフォルトの名無しさん :2013/08/31(土) 10:59:02.68
androidのプログラミングって楽しいですか?
人によるとしか
>>499 ゆりしーはC#で書くからプログラマでしょう
結果アプリが出来るならプログラマかどうかなんてどうでもええんちゃう
504 :
デフォルトの名無しさん :2013/08/31(土) 12:32:29.21
実行性能を犠牲にして開発をやり易い方を選択したらその時点でエゴイストなんだよ WEBアプリにすれば一度作ったものが大抵のプラットホームで動くからマーケット性が優れる しかしアプリはもっさもさで快適とは程遠い環境になる 自己満足のためにアプリを作るなら信者の間だけで熱くなっていればいい 決して多勢には受け入れられない
なんだそのとりあえずいちゃもんつけてレスくれみたいな
んじゃ高級言語なんて使ってないでバイナリしこしこ打てや
タブレットで動くアプリを作った時点で今をときめくプログラマーみたいでカッコいいでしょ? アプリが動く環境としてタブレットが適切かどうかなんて作る側には関係ない みんなから羨望のまなざしで見られる事が僕の喜びです! 本業は歯医者だし〜♪
>>491 おんなじ事に悩まされてる人がいたとは…
自分は諦めて黒塗りしたな
特異すぎるわ・・・ ときどきこういう変態端末があるから困る
512 :
デフォルトの名無しさん :2013/08/31(土) 13:26:21.51
興味深いなw
Unityはオリジナルな動作させたいなら結構コード書く必要がある。 なんにしろ既存のコピペしてるだけならandroidでもそれは同じ。 統合環境でUIをテキストエディタで作ってるからプログラマじゃないって言ってるようなもん。 3DはUI部分やリソース部分の作業が多いってだけだよ。まぁ分業したら終わる話だけど。
以前VBでゲームのタイミングはかるためミリセコンド(1/1000)を使ったら15ミリ秒以下に下げても それ以下の精度はは読み取れない、速くならないということだった。 Javaでやった時はちゃんと1/1000で読み取れたと記憶している。 今androidでやってみたらVBと同じで15ミリ秒以下の精度は読み取れないようだった。 androidでは1ミリ秒の精度はできないということであってますか?
515 :
デフォルトの名無しさん :2013/08/31(土) 16:44:39.30
OpenGL ESで2Dゲームの描写を行っています。 自分の画像サイズが2の累乗でないことに気づいたのですが、 今まで3つのアンドロイドでは正常に起動していました。 仕様しているのはGL1.1ですが、アンドロイド本体にGL2.0以上が導入されていれば、 2の累乗でなくてもよいのでしょうか?
まぁチップがサポートしてるのなら1.xだからってわざわざ無効にする理由はない気がするけど 仕様書によれば2.0でも2の累乗でないテクスチャはリピートできないとか制限があるっぽいよ あとサポートしてるってのは動くって意味で性能が出るかどうかは別問題って話を聞いた覚えもあるような
517 :
500 :2013/08/31(土) 20:58:53.34
>>501 遅ればせながら、回答ありがとうございました。一度やってみます。
notificationの質問 foregroundのサービスのnotificationって更新する方法あります? 何度も startForeground() を呼び出すのは気が引けます
通知が不要で、内容だけ更新したいのなら 最初に作ったNotificationインスタンスを使い回せばいい notification.icon = newIcon; notification.setLatestEventInfo(...); notificationManager.notify(id, notification); 通知が必要ならstopForeground/startForegroundしかなさそう
>>519 notificationManagerって、foregroundのときも使えるんだな
サンクス
ドコモオンラインショップで5000円で投げ売りされてた2画面のソニータブレットも正方形になるな 早く気付けば欲しかったorz
開発用という意味ではほとんど誰も持ってない機種はちょっと…
あれって片面じゃなくて2画面に渡って描画されるのか? 変態端末は非対応にしときゃユーザーのほうから端末買わなくなる
マイナーなのは積極的に切っていくべきだよな どうせ無視出来る程度のダウンロード数だ
>>520 ごめん勘違い
startForegroundとnotificationManager.notifyのidを合わせる
が正解だわ
ついでに自分のアプリにバグ見つけたw
Eclipseを使って「AAA」と表示するプログラムのテストをしたら、 実機もエミュレータも「Hello World!」しか表示されないんだけど、 原因がわからん だれか助けて
>>526 前に作ったものを消してみよう。と、エスパーしてみる。
>>527 全部消したんだけど、だめだった
消し方が悪いのか?
たぶん変えたと思ってるだけでリソースの文字列は変わってないんだろう
strings.xmlって書き換えなきゃいけないの?
1回本でもサイトでもいいから一通り基礎を勉強することを薦める
アプリを作成する人の技術レベルの差って 1〜100000位かな? それとももっとかな?
とりあえずここは間違ってないと思い込んでる部分こそバグが放置されてたりするしね
間違ったソースを書き換えている コンパイルされていない しかるべきターゲットにコピーされていない 設定ファイルが違う場所を指している 間違ったPCを操作している ウイルスに侵されている
ひとつだけ言えることはプログラムというものは書いた通りにしか動かない。
>>531 本人か知らんがこんな質問してる時点で「それはない」なんて断言すること自体おかしい
538 :
デフォルトの名無しさん :2013/09/01(日) 11:35:08.02
書いた通りに動くのは事実だが 書いた通りにしか動かないのは事実と異なる
端末ごとにバラバラなこともあるし undocumentedな振る舞いも多いからな
少なくともどこにも書いてない文章が出ることだけは絶対にない
追い詰められた人間に「頑張れ」をただ繰り返す光景が見える
542 :
デフォルトの名無しさん :2013/09/01(日) 12:58:05.40
470です。 前画面としてActivityを用意し、タッチイベントによって ゲームのActivityに遷移するようにしたんですが、 結局遷移してからのタッチイベントの反応が遅いです。 また、ゲームのActivityでフラグを持たせて、 タッチイベントに反応してからスタートするようにしたんですが、 反応するまでのタッチのキューがたまっているらしく、 スタートしてからタッチイベントが一気に走ってしまいます。 結局根本的な解決ができていないと思うのですが、 何か解決策はありますでしょうか?
>>542 コードによって 思うように動作しない場合があるね(ハンドラ、スレッド)
なんでだろうね
自分も意に沿わない動作の時は色々コードを変化させて調整してます
ImageButtonを、機種に依存しないとように置きたいのですが、エミュレータと実機でやると、 ばらばらの位置になってしまいます。 配置の方法を知っている方いらっしゃらないでしょうか?
>>544 多少のズレはあるが、バラバラって事はないでしょ
そもそも実機があるなら、問題無いかと
SurfaceView使用時にアニメーションをさせてみたのですが、かくかくにしかなりません。 滑らかに移動させる方法はありませんでしょうか?
そりゃカクカクになるようにしかソースに書かれてないからです
カクカクシカジカ
不意にonDestroyが呼ばれて困っています。 onDestroyが呼ばれる原因を調べることはできますか?
>>548 あとはマニフェストにhardwareacceleratedがtrueになってるか、切り替えたらどうなるか、とか。
ちゅうか人様のコードでもいいから、最小限のコードで再現するかどうかを試すところからだ。
いつになってもこれは基本中の基本
起動中に勝手にonDestoryが呼ばれる事はありませぬ バックグラウンドにいるか、他に大量のメモリーを使うアプリを同時使用中じゃないと起きませぬ
>>552 今回はスリープ移行時にonDestroyが呼ばれました。
onPauseの処理に問題があるのかと思いonPauseの処理をコメントアウトしましたが、それでもonDestroyが呼ばれるので、どうにかして原因を調べることができないかと思い、相談しました。
情報小出しですみません。
本当にカクカクですか? どちらかというとシカジカではありませんか?
onPauseで何してるのかは知らないけど onDestroy呼ばれるタイミングって作りにもよるでしょ Fragment使ってるかとかスリープ時にメモリから破棄されたとか ManifestのconfigChangesに何も設定してない時に回転時に呼ばれるとか
そもそもタイミングわかってるなら不意ではない
そのタイミングを調べる方法はないでしょうか? スリープ時にちまちまステップ実行して確認するしかなさそうですか? 画面回転はマニュフェストで横固定にしてるので大丈夫だと思います。
xmlで配置したイメージボタンにリスナーをセットしたいのですが、 コード側でどう書いたらいいかわかる人いませんかー!
onPauseやonDestroyはいつ呼ばれても大丈夫なように作るのが基本じゃないの?
printfデバッグおすすめ
>>560 xmlでボタンにonclick属性を設定するか、xmlでidを設定して、コードでidに基づいてボタンを取得してリスナーを設定する。
>>560 そんなのわからない人のが少ない
findviewbyidでぐぐれ
初めてandroidアプリ作りました eclipseで署名apkをandroid本体に移動してインストールしようとすると アプリケーションの更新とでてインストール出来ません 新規にインストールする場合どうしてらいいですか?
ネットにてメディアプレーヤーの再生時間をgetcurrentpositionで取得できそうな事まで見つけられましたが、一定の時間にイベントをさせたいのですが、よく解りません。参考になる書籍などありましたら教えていただきたいです。 ミニ音ゲー風なものを作りたいと考えており、曲のビート毎にアニメーション描画して、ボタンクリッキンでアクションする的な感じです。
>>565 adb install
じゃダメなん?
>>567 Google Playに登録するまでは行かないけど、ネットで.apk公開したいのです
音ゲーねぇ 思ってる以上にトリッキーな事しないと作れないよ MediaPlayerじゃ同時に音鳴らせる最低保障が3音だけだし SoundPoolは再生が終了したかどうかをプログラムから確認できないし 同時押しとかのマルチタッチは今触れてる数だけ取得できて、指の位置は正確にとれないし まあ工夫のオンパレードになると思うけど頑張れ
>>565 もともとある方が本体に残ってるからそうなる
いたって正常な動作だよそれ?
新規インストールしたいなら既にインストールされてる方をアンインストールすればいいだけ
>>561 動いてる最中にonDestroyされると終了処理しちゃうので困ります。
>>571 終了してほしいときにonDestroyで終了してくれないと困ります。
>>573 それもonDestroy内で対処すれば?
フラグ立てとけばいいでしょ
>>570 インストールすると「インストールされていません」とでて、インストール出来ません
レグザでも使ってるのかよ
>>575 まず、どのような手順でインストールしてる?
ちょっと詳しく書いてみてよ
>>576 レグザをばかにするな(笑)
通話しなければ良い端末だぞ(笑)
ちゃんと署名されていないか 端末にdalvik-cacheとか残ってんじゃねーの?
更新って出るんだからpackage名が被ってんだろ
デバッグ署名のがインストールされたままでリリース用に署名した奴入れようとしてんでしょ デバッグ用と別に新規にインストールしたいならパッケージ名変えろかな 単にリリース用でインストールしなおしたいならデバッグ用をアンインストール
>>571 現状このような動作になっています。
onPause
↓
onDestroy
↓
スリープ
↓この間onResumeの呼び出しなし
アプリ復帰(ブラックアウト)
onDestroyを呼び出したあと、Android側は終了したつもりになってるっぽいです。
でもそこからアプリ復帰をしようとするからわけわかめな状態になってしまうようです。
取りあえずonDestroyまでどのようになってるかもう少し調べてみようと思います。
回答ありがとうございました。
アプリ復帰っていうのは具体的に何が呼ばれるのよ?w
DestroyしたのにResumeするはずがないのでは?
スリープ時にアプリ止めるようなツール入れてないか?
>>575 1回adbつないで adb install -r apkで流し込んでみろ
ダメならエラー文字出るからそれで調べる
>>577 eclipseで署名apk出力して、そのapkをftpで自サーバーにアップ
スマートフォン側でアップしたURLにアクセスしてダウンロード
ステータスバーからダウンロードしたapkをタップしてインスールって流れです
エスパーの方、よろしくお願いします
>>588 あ、それ、マルチユーザーで使っているときになった記憶がある。
別のユーザーでアンインストールしてみそ。
れぐぽん
>>586 ありがとうございます!
結論から言うと無事インストール出来ました!
adb install apkで流し込んでスマフォ側でアンインストール
再度webからダウンロードしたapkをタップしたらインストール出来ました
eclipseで実機で動作確認してたんだけど、それのせいなのか実機に幽霊的なアプリとして残ってたのかな?
adb installする前はアプリ一覧見ても見当たらなかったから困ったちゃんでした・・・
よくワカランチンだけど、これからはadb installでインストールしようと思います
ありがとうございますた!
>>589 Thanks!
よくわからんけどroot取ってるならpackages.xmlにゴミ情報残ってるとか確認してみたら?
そういや勝手に他人のドメイン使ってパッケージ名先取りするとどうなるの?
怒られる
どっちに投稿するか迷ったけど、とりあえずこちらで質問させてください。 手元のC#のライブラリをAndroidに組み込んで使いたいのですが、 Androidで利用できるようにコンパイルしたり呼び出したりする情報とかないでしょうか? ちなみにJavaのライブラリも同時に利用したいので、C#で開発するツールは考えない方向です。
臭まりん
おいおいandroid studioが出たとか言ってたら 次から次に新しいのが出てくるな 付いていけねえよ
androidでの開発は始めてで趣味ではc/phpなど触る程度です エミュレーターがあるのは知っているのですが実機はやはり必要でしょうか? もし必要であればNexus 7などがほしいのですがケータイでのアプリをメインにしているので画面の大きさなどは4インチ程度の実機を買ったほうがいいのでしょうか? まったく関係なくOSのバージョンだけ意識すればいいのであればNexus 7買います
>>599 実機は絶対に必須
画面の大きさなどは非常に重要なのでターゲットに合わせたほうが当然良いに決まってる
OSのバージョンだけというが、現状Android2.3を切り捨てるのは厳しいので
OSのバージョンを気にするんならNexus7はよろしくない
なんで実機もないのにandroid開発しようと思ったの
>>600 回答ありがとうございます
現状のandroidの開発についてまったくわからず本を注文しただけなので無知です
画面の大きさはケータイをターゲットにしているのでネクサスは諦めます
android2.3を切り捨てられない
とはやはり主流がそのバージョンなんでしょうか?
お金はかかりますが最新を追いたいと思っていたのでちょっと複雑です
>>601 はっきり言って趣味です
仕事でも使わないですし
3Dゲームをバリバリ作りたいとかでなければ 5000円くらいの中古スマホで十分開発できる
解像度の違うのを3台くらい持っとくといいかもね
>>604 最終的にはOSごととなると主流なのだけで3台くらいをみなさんは所持してるんですかね
みなさんありがとうございます OSシェアが多い中古のケータイかっておきます
今のSDKってCygWinなくてもデフォでC++コンパイルできるけどC#もいけたっけ?
キャリアは2年縛りがあるからね 2年経過した人から逐一4.2.2か、その時出てる最新Verに乗り換えていくんだろうね
>>609 Monoというオープンソースの.NET実装を組み込んでる
UnityがC#なのも同じ仕組み
Nexus7ユーザーも意外と多いからタブレット対応するために実機は最低スマホとタブの2台は必要だな
Environment.getExternalStorageDirectory使う意味ってある? 普通にマウントパスをuriで書いてやればいいんじゃね?
ああ、そうだね
用意されたAPI使わない奴らが マルチユーザー化の仕様になった時に下手こいたの知らんのか
SDに関しちゃAPI使ってもバグる糞端末もあるけどな
ボタンを押して別のアクティビティに画面遷移する時に効果音をつけたい (タイトル画面でスタートボタンを押したら音が鳴ってゲームが始まる感じにしたい) どうすればいいですか?
ボタンを押して別のアクティビティに画面遷移する時に効果音をつけるといいよ
>>619 インテントサービスでやった方がいいですか?
クイズの正解や不正解の時も効果音をつけたいのですが
MediaPlayerかSoudPool使えばいいよ
ありがとうございます。 やってみます。
すいません、無理でした。 どっかに4択クイズアプリのソースはないですか?
その程度すら無理なら何をやっても無理 クイズアプリ作ろうとしてる者が4択クイズアプリのソースを見ながらやるのは それは作っているとは言えない 単なる他人のソースをコピーしてるだけである 4択クイズアプリのソースを公開してる作者がキミのアプリを作っているのとまったく同じ
GLを使ってカラーピッカーを作ってカスタムView化したけど GL側で描画領域を指定してあるんでViewのサイズが デヴァイスによって変わってしまうんで 出来ればクライアントのgetWidth()の値で変化さしたいです。 どのような方法が良いのでしょうか? どなたかご教示ください。
>>625 デブぁいすのgetWidth()をグェットして描画領域を指定すればいい
>>625 のようにカラーピッカー使ってあるのって9patchの表示崩れないのはなぜ?
>>617 そもそもSDカードのパスを取得するAPIがない。
AndroidSDKって色んなところが残念だよね。
>>628 >>そもそもSDカードのパスを取得するAPIがない。
そのウソほんと?
630 :
c :2013/09/04(水) 08:45:55.02
端末によってdpiの値が正確じゃないんだけど この手の値を信用しちゃだめってこと? nexus7ですら値が怪しい。 日本製スマホは正確な値を返すところから国柄が出る部分なのか?
今思ったんだけどそういう正確じゃない情報返す端末あるなら ユーザが手入力で設定できるようにすればいいんじゃないか
632 :
デフォルトの名無しさん :2013/09/04(水) 09:41:08.46
>>629 内部ストレージとして内蔵されたSDカードと、
いわゆる外付けSDカードの2つがあるからね。
APIでは内蔵のパスしか得られないよ。
要するに外付けSDカードさせる機種では
そのパスが「/mnt/sdcard/external_sd」だったり
「/mnt/sdcard-ext」だったり機種によって違うんだけど
それを統一して取得するAPIがない、ってこと。
正確に言えば二つ以上の外部保存領域に対応してない、だけどな そういう場合に内蔵のパスをAPIが返すかも確実じゃない といっても外部SDが入ってない可能性があるから現実的にはそうなるだろうが
xperia axなんて端末ストレージがsdcardで外部ストレージがextSdcardだからな 区別しづらい。ましてやユーザ側になると全く区別できてなくて、説明も一苦労
なるほど ユーザーに選択させるようにしないとダメなわけだ OpenFileDlgがapiに無いのでそれも造る必要があるけどね
ファイルオープンダイアログAPIに作って欲しいよねー まさに車輪の再開発
外付けSDのpathなんて考慮しなくてもいい
>>637 なんて意味がわからないレスなんだ・・・
566です。解決できそうです。
>>569 助言ありがとうございます。肝に命じ精進します。
640 :
デフォルトの名無しさん :2013/09/04(水) 12:31:53.13
質問! トグルボタンとラジオグループのチェックドチェンジイベントリスナを同じアクティビティに両方実装しようとすると、 インポート文がぶつかって片方しか実装できない!これって仕様なの?
ループザループかアラウンドザワールドすればおk
インポートがぶつかる時はフルパッケージ名で記述すればいいんじゃないだろうか new android.view.CheckedChangeListener() {@override 〜} パッケージ名は適当だけど
Android案件が多いので、やってみようと思うんですが、 ゲームばかりが多いですか?それ以外(業務系アプリとか)もけっこうありますか? ゲームばかりならやめときたいとおもいます(´・ω・`)
検針業務・集金業務・宅配業務なんかの台数が多いものが受注出来たらかなり稼げそうだけどね まだ、ハンドヘルドつかってるから、全入替なら...ホクホクだろうな...
そういうのは、ipadのほうが優位だな
>>646 いゃいゃいゃ
日本では売ってないけど、耐衝撃性、耐防水性がすごいandroid端末があるのよ
それほど高額でないし
機種依存が面倒レベルをはるかに超えてるから 業務用は個人(フリーランス)が手だすと死ぬほど大変だとおもうが 端末とのバンドルで販売し全部同じ機種に統一する感じなら個人で業務用もありだとは思う
廉価版のiPhone5cがでるとそっちにもってかれそう
import android.net.Uri; Uri uri = data.getData(); というのを、どなたかもうちょっと分解して頂けませんか? どっちのuri に getdata したものが入ってるのか良く分かりません
どっちの uri って何よ uri いっこしかないじゃないか
>>649 もともと無料で乗り換えさせてたから、今までの機種も実質0円だったと考えると
廉価版出ても何もかわらない気もしてる
>>651 もしかしたら「Uri uri」の事いってるのかも・・・・・・・
だとしたら・・・・・恐ろしいよな・・・・・w
654 :
650 :2013/09/04(水) 16:35:36.53
初心者質問は駄目でしたか?
日本だけの話ならiphoneのシェアが異常に高いからな
>>650 String string = "data";
どっちの string に "data" が入ってるのか良く分かりませんか?
int x = 42;
どっちの x に 42 が入ってるのか良く分かりませんか?
>>648 ハードを売るのは個人ではムリ
故障した時になんともならない
Uri →型 uri →変数 Uri hoge = data.getData(); でもいい
Raspberry Piっていうのもあるから個人でハード作って販売もこれからはありかもよ
660 :
デフォルトの名無しさん :2013/09/04(水) 17:21:58.31
型と変数も知らないのにGetDataを知っているとは思えない 違う意図があるんじゃない?
なになに哲学的な話? そもそも実在論とは…
662 :
デフォルトの名無しさん :2013/09/04(水) 18:21:48.49
質量保存の法則によると 0から1は生まれない つまりUriという虚像からuriという偶像が生まれることはない しかし両方が共存しているのは uriは偶像を象った虚像であることを意味する
663 :
デフォルトの名無しさん :2013/09/04(水) 18:30:13.12
そこで、 Uri=虚数i uri=実数n と仮定しよう iからnを生み出すためには i*i * n * (-1)= n となる つまり n=getDataの場合 i=-i(getData / n)
664 :
650 :2013/09/04(水) 18:47:52.52
いえ、分解してくれるだけで良かったんですけど・・ import android.net.Uri; Uri uri; uri = data.getData(); と、こういう事で良いんですよね?
665 :
デフォルトの名無しさん :2013/09/04(水) 18:51:54.18
お、おう
667 :
650 :2013/09/04(水) 19:05:09.82
ちゃんと答えて貰えないなら、せめて茶々入れるのは止めて欲しいのですが
からかうなら余所でやれ
マジレスしとくと、初心者の質問でもいいと思う でも、最低限の言語仕様、つまり、文法や構文を理解してなかったら、回答もらっても理解できず、あまり意味ないと思うぞ
つまり これと Uri uri = data.getData(); これが Uri uri; uri = data.getData(); 同じだということが理解できないってことなのか? なんで理解できないのかが理解できないから(;゚д゚)ポカーンなのだよ と思ったけどこういう人結構文系の人に多い気がする(文系理系で分けるのもあれだが) 理系ならこいうもの(こういういルール)だと何の疑問も持たないと思う。
>>672 なんでまだ理解できてないと思ってんの?
ここまで上から目線で教えを請う奴も珍しいなwww 俺がここで質問するときは申し訳なさすぎて下から下からなのに
で、お礼も言わずに〜〜ってパターンだな 散々人いじくり倒したらそうなるだろ
Uri uri = data.getData(); を、 Uri uri; uri = data.getData(); と直感的に理解しまうのは文系的素養だろう 理系ならそうでない可能性を考慮する
文系の方が分けたがるよ実際
>>676 文系なのにそれが直感的に理解できるなら理系の方が向いてるってことだろうな
>>678 同一だという可能性に直感的に到達できないのは文系とかじゃなくてただの馬鹿
これはプログラミング慣れしてないとわからんもんじゃないの まったくのプログラミング初心者ならつまずくと思う
別だろと思う奴はC++er
間違いを素直に認めない上から目線の初心者w
初心者は等号を代入とすら思わない
>>671 質問スレから追放されそこに隔離されたお前が
質問スレとデベロッパースレに恨みを晴らすための乗っ取り目的スレを宣伝するなよ?な?
その隔離スレでずっと大人しくて出てくるなよ?な?
代入すらわからない身は どこかの初心者講座Webでも見てからきなさい
Bitmap.createBitmap()で取得した後、オリジナルをrecycleしていいものか悩むんですが、 どうしたらいいんでしょうか? サイズが同じだと同じインスタンスが返されるようなのでrecycleできないし、 サイズが違うと違うインスタンスだからrecycleしたいし。 よろしくお願いします。
Bitmap.createBitmap()にBitmapを渡した時の話でした。すみません。
同じか比較して違ったらリサイクルすればいいんじゃね
if (bitmap != org) org.recycle(); でいい気がしてきました。 ありがとうございます。
690 :
デフォルトの名無しさん :2013/09/04(水) 23:09:41.01
>>664 ごめん、質問が想像の斜め下を行きすぎてて理解不能の域に達してたからわからなかった
多分誰一人として質問の意味をわかっていなかったし
ある意味その質問自体が虚数
まぁ、こういうことでいいんですよねと言われてもそれして何の意味があるのかって感じだわなw まず変数とはなにかとか変数の代入のしかたとか初心者本の5ページあたりに書いてあることから勉強するべき
馬鹿は本やマニュアルを読まないからな
693 :
デフォルトの名無しさん :2013/09/05(木) 02:08:55.67
SurfaceViewからActivity(文字メインのヘルプ画面)へ画面遷移する際に、一瞬Activityの画面が出て、エラーでアプリが停止します。 原因はrun()メソッドのdraw(canvas)がNullという判定でした。 ただ、surfaceDestroyedメソッド内で、thread = null; と記述してもしなくても同じ動作でした。 何か根本的な事を間違えているのでしょうか? どうすればエラーにならずに説明画面が出て、バックキーでSurfaceView継承クラスへ戻れるでしょうか?
>>693 >>何か根本的な事を間違えているのでしょうか?
その通りです
コンテキストって難しいよなー コンテキストを引数に渡す時(例えばArrayAdapter生成時)の getXxxContext()の各種もしくはthisの使い分けって初心者はどうやって習得したらいい? アプリ作ってもどこかでフォントが変になってたりして、修正しようにも使い分けをしっかり理解できていないからかなわん
>>695 >>コンテキストを引数に渡す時(例えばArrayAdapter生成時)の
>>getXxxContext()の各種もしくはthisの使い分けって初心者はどうやって習得したらいい?
>>ArrayAdapter
こいつのpush pop絡みでメモリリークが出たのでいろいろ調べたら (その時はthisを使ってた)
>>thisは使うな
ってHPがあったので色々やってみたけど、どっち使っても同じだった(他に原因があった)
で、thisのまま対処した
app. contextしかダメなのもあるけど... どっちかに決めてもらいたいものだ
thisはあくまでthisなんだから当然のごとくgetの方使うべきでは
700 :
デフォルトの名無しさん :2013/09/05(木) 14:49:59.47
Androidプログラミング初心者ですが、androidの勉強の仕方を教えてください
まず裸になります
英語だよ
お前ら英語できないくせに
707 :
デフォルトの名無しさん :2013/09/05(木) 16:12:58.94
英語の勉強の仕方を教えてください
>>706 英語できないの?
正直、英語もできずに開発するのキツくね?
709 :
デフォルトの名無しさん :2013/09/05(木) 16:23:06.47
〉〉700です 皆さんありがとう、頑張ります
>>702 ここの連中ってここに書いてあることスラスラ読めるの?
質問なんですが、 webviewでwebページをロードして、 ある程度ページがロードされて、 ページスクロールが可能になって初めてスクロールを検知したいんですけど、 何かアイディアありませんかね? onScrollでスクロールイベント取得しても、読み込み中しか検知してくれなくて…
あるいは、ページのリンククリックして、webページ読み込み開始して、 何かしらの文字や画像がレンダリングされたタイミングを取得できる方法はないですかね? onpagestartedは読み込み開始時なので、ちょっと早いので
俺英語できないけど頑張って読んでる
>>714 何かしらの文字が決まっているならそれを検出することでできそうな気もするけど
タグならgetElementsByTagとかで
>>716 一般的なwebサイトなんです
どんなwebサイト読み込んでも、同様に検知できればな、と考えてまして
html head body img これならどんなサイトもあると思うが
PictureListenerとかは?
>>718 すいません、なんか変な勘違いしてました。
なるほど、htmlのタグで検知するってことですね。
たとえば<body>を検知した場合、レンダリング開始時点と考えられますかね?
>>719 picturelistenerは、確か文字とか画像がレンダリング可能になったタイミングを検知できるんでしたっけ?
あるいは前者の、 webviewでページ読み込んで、ある程度読み込んで、ページのスクロールが可能になるタイミングを検知したい場合、何かいいイベント検知のメソッドありませんか? scroll関連のメソッド漁ってるんですが、良さげなのが見当たらなくて…
>>721 WebViewの表示内容が変化するたびに呼ばれるはず
>>696 ArrayAdapterに渡すContextはLayoutInflaterのインスタンスを取得するために使われから
適切なテーマが適用されるようにするには、DialogならDialog、
ActivityならActivityを渡すのが正解。
ApplicationのContextを渡すのは間違い。
>>724 ●どっちでも動く、
●サンプルがthis、
に惑わされる
>>725 > ●サンプルがthis
将来が不安になる言葉だ
727 :
デフォルトの名無しさん :2013/09/05(木) 21:39:56.36
>>724 よくgetApplicationContext(), dataってやるせいでアイテムのフォントに holo が適用されてこの読みにくさ何なの!?
ってなったわ
コンテキストはとりあえず指定すれば動くのがなあ。俺もちゃんと理解しないと
でもgetApplicationContextを積極的に使わないとメモリリークるからなぁ
soundpoolを使ってボタンを押すと音が鳴るアプリを作りました。 もう一つボタンを作って違う音を鳴らそうとしたのですが、どちらのボタンを押しても両方の音が鳴ってしまいます。 どういう処理をすればよろしいでしょうか?
>>729 Contextオブジェクトなんて怖くて保持しておけない
>>730 そりゃあ、もう一つボタンを作って違う音を鳴らそうとするんじゃ、
両方の音が鳴ってしまうわな。
解決方法としては、ボタンが一つの状態から
もう一つボタンを作って違う音を鳴らせば良いんだよ。
この文章の意図は伝わるよね。
>>730 まさかコピペした二つのボタンのonClickに共通のdoAction()をセットしているんじゃ…
734 :
730 :2013/09/05(木) 23:13:52.86
>>733 あー、その通りでした。
あの情報だけでよく分かりましたね。
ありがとうございました。
あ あ あ
これは普通にわかるけどまずdoActionが何なのかとかちゃんと理解してから進まないとこれから大変だぞ…
734は偽物です
>>737 いや、いっその事734を本物としよう。
>>718 最近は html や body タグを省略するのが推奨されてるよ。
qiita.com/wadako111/items/7100c02337f14df07205
>>718 昔、手書きでhtmlを書いてたときには俺も省略してたな。
どっかの無料HPスペースで、そこらへんを省略したhtmlだと広告バナーが挿入されなかったわ。
バナー挿入の仕組みをつくった人も、そこらへんを省略するやついないだろうって思ってたんだろうな。
>>696 画面に関することにはActivityのContext、つまりthisとか
それ以外はApplicationContextでいいと思う
とりあえずApplicationContextでいけるところはできるだけ使っとけって感じ
GooglePlayのアプリを、自社発売の特定のAndroidタブレットだけでダウンロードできるように したいと思います。それで次のことを教えていただけないでしょうか。 (1) Android Developer Console で除外する端末を3300個入力するのは 大変なのですが、一括で除外する方法はないでしょうか。 あるいは、もっとよい方法があれば教えてください。 (2)自社発売のAndroidタブレットをGoogleに申請するのはどうしたら よいのでしょうか。 よろしくお願いします。
>>743 間違えて、このスレッドに書いてしまいました。
無視してください。
すみません。
>>743 キッテイングで入れてから出荷
では駄目なの?
結局コストの問題だと思うけど。
マルチポストだよ 相手にすんな
ドコモからiPhoneか 日本のユーザー3割減ってとこかなあ
流石にau出したときには伸び半分くらいになったしな。順調にDL数伸びるのdocomoくらいだったのに。 SBM?水平飛行ですわ。
世界では泥の方が売り上げあるから日本以外向けで頑張れ
>>749 そいつ一人のために何スレもの人間が翻弄されるからだろ
というかそれぐらいネットマナーだ
>>751 マルチポストと翻弄されるの繋がりがわからん。
てか、困ったら何でもネットマナーで片付けるなよ。
いくらサービスといっても 公衆トイレのトイレットペーパーを必要以上に持ち出したりしないでしょ? 「無料だからいいじゃん、なんでいけないの?」 「マナーです」 「てか、困ったら何でもマナーで片付けるなよ」
せっかく答えたのに別のスレでもう答えが出てたらと考えると 単純に答えたくない 俺はいやだから答えない
確かにマルチポストがむやみに駄目って時代遅れ感があるよな。 問題は値渡しだからなような気がするが、参照渡しだったらいいんじゃないか? つまりは、ここの質問お願いしますとリンクを貼るとか。
マルチしときゃいっぱい答えがもらえる マルチしときゃはやく答えがもらえる マルチしたほうが効率がいい とか考えてるかもしれないけど 全員が一斉にマルチしたらカオスなことになるし機能崩壊するだろ マルチしたら多くの人が一斉に調べたり考えてくれたりするわけだけど そのせいで同じこと調べてたり、他の人がスルーされたり、やる必要なかったことで時間取られたり、etc でも自分はやってもいいやってことだろ? 上のって全部自己中な人間の考え方だろ 自己中は嫌われる、ネットでも同じ
あっちのスレでもこっちのスレでもそっちのスレでも 同じ内容の書き込みが繰り返されてるのを見たら だんだんウザくなる 内容に関わらず
twitterで炎上させちゃう想像力の欠如したゆとりと同じ類の臭いがする
>>755 ネットの情報は集約してなんぼだし、
そういうのも場合によってはありだと思うけど
やっぱり全員が同じ事やり続けたら
いつまでもエロ画像に辿りつけないエロサイトみたいなことになって
問題出ると思うからマルチすんなが一番丸く収まる
760 :
745 :2013/09/06(金) 23:56:11.24
>>746 マルチと知らずにレスしちゃったよ。
すんません。
てか、「書き込むスレ間違えた」と
書いているから、疑いもしなかったよ。
複数のスレを常に巡回してるわけでもないしね。
>>759 しかし、知りたい答えを知っている人間にまで質問が伝わる可能性が低くなる問題については見ないふりをしていて本当に良いのだろうか。
例えば知らずに、もしくは間違って過疎掲示板に質問を書いてしまったらもう書き直すことは許されないのか。
>>761 しばらくしてから、回答がないようなので、こちらで引き続きとリンクを貼るのが普通じゃないか。
同一人物かわかんなくね?
766 :
745 :2013/09/07(土) 00:28:46.41
>>764 うわー、やられた。
完全なるマルチだな。
×マルチポスト ○クロスポスト ゆとり世代やっぱり増えたな
>>767 いや、間違った知識を披露されたところで申し訳ないのだが
この件は間違いなくマルチポストだろ。
クロスポストだと勘違いしたのは何故??
マルチポストマナー時代を生き抜いたおっさんが レス欲しさに間違った内容を書きました。みたいな
タッチイベントについて分からないことがあり詰まっています。 DBのデータをSimpleCursorAdapterを使用してListViewに表示するプログラムを作成しています。 実装したい機能はListViewで表示されたアイテムスワイプ→削除ボタン表示→ボタンクリックでDBとListViewから削除 というものです。 ListViewの表示、onItemClickでのListの値の取得といった処理は実装出来ました。 しかし、スワイプしたListの特定と値の取得が出来ません。 OnTouchListenerのACTION_DOWN、ACTION_UPか、GestureDetectorのonFlingを使用するのだと思い試行錯誤してみましたが、記述方法がわかりません。 ご教示よろしくお願い致します。
>>771 何の情報を取りたいのか全くわからんからアドバイスしようが無い
・こういった動作をしたタイミングで
・Listのこの情報を取得したい
というのを明確に
例:ListViewをスワイプした瞬間のListViewの縦スクロール位置が取得したい
(DBを使っているなどの無駄な情報が入っていることとか) 文章の推敲は必要だが、全くわからんってほどでもないだろ。 スワイプイベントが発火したときに スワイプが行われた位置にある ListViewのpositionとItemが知りたんだろ。 まぁpositionが分かればItemは取得できるので positionを特定したいってことだな。 つっても俺にはその方法が分からないから 結局アドバイスはできないのだが。
スワイプしたListの特定と値の取得 が スワイプが行われた位置にあるListViewのpositionとItemが知りたん になるのか。確かにその後のOnTouchListener〜GestureDetector〜の辺りと組み合わせて読み解けばそんな感じがする ListView.setOnScrollListenerのonScrollイベントのタイミングで ListView.getSelectedViewで選択した行のViewを取得して Viewに設定したテキストなりIDから行を特定できる。ような気がする
int position = list.pointToPosition(x,y); Object item = list.getItemAtPosition(position);
数字を入れさせたいEditTextで、値が入力されていないときにその値を呼び出そうとすると何が呼び出されるんですか? また、入力されていないのにその値を使って計算させようとすると警告ダイアログを出すにはどうしたらいいのでしょうか?
>>776 >>値が入力されていないときにその値を呼び出そうとすると何が呼び出されるんですか?
悪魔
>>776 前者、nullか0文字のstring
後者、nullか0文字のstringだったときにダイアログを出す
これでわからなかったら独学でもできることを勉強してない証拠だから、
なんか本買って隅々まで目を通した方が間違いなく早いです。
779 :
デフォルトの名無しさん :2013/09/07(土) 16:28:40.14
ぬるぽ
java級悪魔null eclipse級悪魔R not found android級悪魔ANR 大天使stackoverflow
アプリが稀に強制終了します。 "unable to close due to unfinalised statements"なるエラーで、SQLiteのカーソルclose忘れ?らしいのですが、出たり出なかったりするのは何故なんでしょうか?
皆様ありがとうございます
>>778 さんのアドバイスに従ってこのようなif文を組み入れましたが、ダイアログが出る前に強制終了してしまいます。
計算させる前なので、タイミングは間違っていないと思うのですが…どこがおかしいのでしょうか?よろしくお願いします。
String str = findViewById(R.id.edit).toString();
if (str == null) {
Dialog();
}
public void Dialog() {
AlertDialog.Builder ad = new AlertDialog.Builder(this);
ad.setMessage("エラー");
ad.show();
}
まずは脊髄反射でコード書いて脊髄反射で質問するのをやめて、脳味噌を使うことをオススメする。
if (str.length() == 0)
>>784 ありがとうございます。
たしかにそれが正しいと思うのですが、ダイアログは出ませんでした。
>>783 申し訳ありません。僕の脳みそではろくな答えが出なかったため、質問する運びとなりました。
皆様ありがとうございました。もう少しいろいろ試してみます。
ダイアログにstrを表示させてみれば
>>785 1日迷っても答えが出なかったらおいで。
>>782 >public void Dialog() {
メソッド名は小文字で始めること。この場合dialogじゃあんまりなので、showDialogとか。
で、このメソッドをどこで呼び出してるの?
大体 String str = findViewById(R.id.edit).toString(); で取れるっけ? String str = ((EditText)findViewById(R.id.edit)).getText().toString(); じゃないの?
EditText#getTextをequalsで比較するのは落とし穴だから気をつけないとな それで返るのはchar型だからちゃんとtoStringでstringに変換しないと比較スルーされる
知ってる。
>789の指摘は確かにその通りなのだが、強制終了する原因ではないだろう。 晒されたコードで、落ちる原因として考えられるのは、 findViewById(R.id.edit) がnull どのviewにあるeditを、どのviewのメソッドから探そうとしているのか? もう少し晒しなさい。 >788 どこで呼び出してるの? っていうのはネタなのか?
指定した場所をあたかも連続タップしてるようなアプリ作りたいんだけど、論理上は可能?
調べてないからわからないけど それができたら起動した瞬間アフィ強制タッチとか 裏で動かして強制課金とかできちゃうよね? 逆説的に考えて無理だろ
というか
>>789 の前者のままだとビルド通らない気が…
強制終了ってまさかビルドエラーじゃないよな
SurfaceViewについて質問です。 RPGのようなものを作りたいのですが、壁などの固定パーツも動かすキャラと同様に画面をロックしている場所(runメソッド内)でcanvasに描く必要があるんでしょうか? 固定パーツも毎回更新すると処理が重くならないかなと思いまして・・・
訊きたい事を認識するのに3分くらいかかった・・・ なんて下手糞な日本語なんだ・・・
俺は10秒で理解した でもSurfaceView使ったこと無いからわからん
俺も4回くらい読み返さないと理解できなかった。 10秒ってすごいな。 速読とかやってる人?
どんなゲームでも全体をリフレッシュする必要はある。 Canvasへの描画回数を減らす工夫をすれば処理落ちするほど酷くはならないと思うが
俺は描画処理やったことないからわからんけど Win32 APIみたいにinvalidateの領域指定とかできないの?
今時ゲームの描画でそんなケチ臭いことしねえよ 2Dもポリゴンなんだから
グダグダ聞く前に自分で組んでみりゃいいじゃないか
今はバッファに全部書いて丸ごと転送を1秒間に60回やるのが普通 Windowsでもゲームはそうやってる。
効率突き詰めりゃあOpenGLに行くんだし、SurfaceViewぐらいなら 何も考えずとりあえずやりゃあいいんだよ
Activityで、 startActivityForResult ↓ onActivityResult { この中で (A)startActivity(intent); をすると } 戻った時にActivityの画面の下半分が非表示になってしまうですが 原因は何でしょう ●(A)を削除した場合は正常に表示されます ●他の所から(A)だけをを呼んだ場合は戻り後は正常です ●画面の下半分が非表示になるだけで各viewの位置・動作などに変化はありません ●画面の非表示になった所をタップするとその位置にあるボタンなどは機能します
便乗で、60秒に一回書き換える方法はどれがいいですか?どれを使ってます? 1. future = scheduler.scheduleAtFixedRate(task,0,wait,TimeUnit.MILLISECONDS); の割り込みを使う 2. System.currentTimeMillis() のタイムを毎回見て更新のタイミングをうかがう 3. Thread.sleep(wait); を別スレッドで動かしてループ待ちして更新させる
WebViewでWeb表示する時の広告カットのやり方について質問させてください。 練習で2chまとめアプリを作っているのですが、ブログページを開いた時に広告が多く表示され見づらくなっています。 公開されているまとめアプリのように広告をカットして表示したいのですが、 これらはHTTPを解析してページをカスタマイズしているのでしょうか。 また、このようなことを調べる時の検索ワードとかありましたら、 ご教示よろしくお願い致します。
それってブログのただ乗りですよね 広告のブロックは相手に損害を与えているという事ですよ クソ野郎
AlertDialogを使った実装について相談です。 pribate boolean hogeA (boolean _flag) { if (_flag) { // ここでAlertDialogの表示して // OKタップ時には return hogeB(); // Cancelタップ時には return false; } else { // _flag == falseの場合 return hogeB(); } private boolean hogeB() { // 略 } ということをしたいです。 hogeA関数はboolean値を返すのですが、 ・引数_flagがfalseの場合は、hogeB関数を実行して、 hogeB関数の戻り値をhogeAの戻り値として返します。 ・引数_flagがtrueの場合は、AlertDialogを表示します。 AlertDialogのOKがタップされたら、hogeB関数を呼び出して、 hogeB関数の戻り値を、hogeA関数の戻り値としたいです。 ・また、上記でAlertDialogのキャンセルがタップされたら、 falseをhogeA関数の戻り値としたいです。 1つ目は実現できるのですが、2つ目と3つ目の実現方法が分かりません。 可能な場合はどのように記述すれば良いのでしょうか。 よろしくお願いいたします。
>>811 AlertDialogはOK・キャンセルボタン押下時のイベントドリブンなので、AlertDialog表示中に処理を止めてボタン押下の結果から処理を続けることはできない
private boolean hogeA (boolean _flag)
{
if (_flag) {
new AlertDialog.Builder(this)
.setTitle("ダイアログタイトル")
.setMessage("ダイアログメッセージ")
.setPositiveButton("OK", new OnClickListener() {
@Override public void onClick(DialogInterface arg0, int arg1)
{
//============
// OK時の処理
//============
}
})
.setNegativeButton("キャンセル", new OnClickListener() {
@Override public void onClick(DialogInterface arg0, int arg1)
{
//============
// キャンセル時の処理
//============
}
})
.show();
}
else {
return hogeB();
}
}
>>812 >>AlertDialogはOK・キャンセルボタン押下時のイベントドリブンなので、AlertDialog表示中に処理を止めてボタン押下の結果から処理を続けることはできない
って事もないんだけどね...スレッド・ハンドラを使えば可能
誰もが1度は悩むandroidのダイアログ(モーダルが無い)
でも、腕の見せ所だけどね
腕の見せ所も何も・・・だけどな
たしかにoutsideのタッチを無効にするオプション入れるだろ
スレッド・ハンドラを使えば可能ってどういうこと?
>>797 考え方はTV放映されてるセルアニメやパラパラ漫画とまったく同じ原理なので、想像してみるといいよ。
背景もキャラも、全部1枚1枚入れ替えて撮影してる。
この時動かない背景とかは、セル画として大きいパーツで用意してるけど
撮影する時は、毎回「背景置いて、その上にキャラのセル画置いて、はい撮影」の作業を繰り返しているから
これをプログラムで再現すればいいのさ
>>808 俺ならその中なら1を採用するかな。
2はタイミングをうかがう為のループで処理が固まる
3も同じく処理が固まる
処理が固まると、描画には別に影響はないがキー入力とかユーザーからの入力受付に影響が出る。
>>813 Androidのダイアログは使いづらいよね。
「なんでこんな単純なことするのに、こんなに複雑に工夫しないといけないんだよ!
コード1行で済ませろよ!」って事が多々ある。
ダイアログくらいはユーザーからの入力くるまでプログラム側は待機するという
他の言語で標準実装のあの動作でいいとおもうのに。
そっちの方が使い勝手いいし。
非同期の方をオプションにすればいいのにと個人的には思う。
818 :
811 :2013/09/08(日) 16:42:10.74
>>812 ,813
ありがとうございます。
実装方法を変えるか検討しつつ
別スレッドを利用することも検討します。
Win32でいうところのWndProcみたなやり方ですかね。
>>816 可能だけど アルゴリズムを変えるのがandroidの作法みたいだよ
誰がこんなクソdaialogを考えたのかねぇ
UIをいじりにくくしてるもの同様だが
「バカか?androidの設計者は」 と思うわ
winmoblieはユニコード以外はwinとほぼ同じだったから
OpenGLで3Dの動きのあるものを作る時も基本は
>>808 のような方法でタイミング取るのかな?
ホームアプリからウィジェットを作成するときに ウィジェット一覧に表示されるものって AndroidManifestでWidget用のActivityとして宣言したものなので 動的に項目を生成、削除することは出来ないのでしょうか? 設定用のActivityで「要素追加」をしたら ウィジェット一覧に表示されるものが増えて 「要素削除」したら、一覧から該当要素が削除される というものを作りたいです。 たとえばカウントダウン用のウィジェットを作るとしまして、 設定用のActivityから「5秒用」とか「10秒用」とかを 指定して「要素を追加」すると、該当の項目がウィジェット一覧に追加される、などです。 自由設定できるウィジェットをあらかじめ5個用意させておいて その5個について自由に設定させる、という方法をとっているアプリは よく見かけるのですが、項目の数を動的に変更させたいのです。 長文となりましたが、よろしくお願いいたします。
普通はonDrawとかonDrawFrameの中で処理するけどな・・・
>>821 ウィジェット一覧に載る感じにするには厳しいでないかな
ホームショートカットならできる
824 :
821 :2013/09/08(日) 17:11:58.75
>>823 レスありがとうございます。
厳しいですか、残念です。
普通はモーダルdlgの次に分岐するのをグチャグチャにするわけだ
>>824 いや、ジョルテのウィジェットってそうなってた気がするけど、ということはできるんじゃないの?
ウィジェットでBroadcastReceiverの一種なんだからプログラムで登録できるんじゃない? > ウィジェット一覧に表示されるものって > AndroidManifestでWidget用のActivityとして宣言したものなので まぁただActivity宣言とウィジェット一覧は関係ないけどな
>>821 最大数が決まってるなら最大数ぶん宣言しておいて android:enabled="false" にしておくとかどう
将来的にモーダルに対応してくれるのかな?
無理だし必要ない
>>832 必要無いわけがないだろ
1行で済む事をどれだけ手間がかかかるか...
あとどこからでもUIをいじれるようにしないとな
モーダルはオプションでできるし、 DialogFragmentで一回汎用クラス作っとけば一行でできるだろ
バカと天才は紙一重
このスレだったか忘れたが自社の端末だけにインスコしたいとかいうレスあったけど
こういうことできるようになってたんだな
Google、社内向けアプリをGoogle Playストアの独自チャンネルを通じて配信できる
「Google Play Private Channel」機能をGoogle Apps利用者に提供
http://juggly.cn/archives/76642.html 教育向けというのもできるみたいだが
デベコンに”このアプリを教育向け Google Play に追加します。”っていうのができてた。
チェック入れてる人いる?
無料版と有料版どっちがいいだろうか
モーダルモーダル言ってるやつは早くVBスレに戻れ
こんなオブジェクト指向の塊、理解できるおまいら凄いな
ちょっと意味が分かりませんね
>>739 なるほど、省略が推奨されてるんですか…
タグで判断は難しいんですね
どうにも解決できないので質問させてください。 ローカル(assets)のhtmlを一部プログラムで書き換えて表示したいのですが、 webview.loadDataWithBaseURL("file:///android_asset/", readString, "text/html", "UTF-8", null); setContentView(webview); だと真っ白に表示されて何も表示されません。 webview.loadData(readString, "text/html", "UTF-8"); setContentView(webview); だと正しく表示されます。 assetsの画像も表示したいのでbaseurlを指定したいです。 OS4.3のNexus7、OS2.3.3のN-06C、シミュレータ 全てで同じく真っ白です。 なぜでしょうか。
>>842 俺は
loadDataWithBaseURL("file:///android_asset/", html, "text/html", "UTF-8", null);
でうまく行ってるよ。XperiaAXで確認
他10000人のユーザからも文句言われてないから多分問題ない
ただしLinearLayoutで囲んだWebViewをxmlに記述し、loadDataWithBaseURLの前にxmlをsetcontentViewしてる
sdkのソースコードとエラースタックの行表示がずれてるからブレークポイント設定できないんだけどそういうものなの?
ところで webview.loadDataWithBaseURL って元々はどういう状況で使うものなの? 第一引数のURLで第二引数のソースを表示するってこと?
プログラムで適当なHTML生成して表示したい時用じゃないの
htmlに慣れてるとちょっとした説明ページとかxmlで作るより簡単で楽っていうのもあるな
http://blog.kinjouj.net/android-mapfragment.html このサイトの通りに開発を進めていったところ、
// GeoHashを使って近傍エリアを取得するだけ (APIはAndroidパッケージには含まれてない)
String geoCode = GeoHash.encode(pos2.latitude, pos2.longitude, 5);
List<String> geoCodes = GeoHash.neighbor(geoCode);
List<LatLng> positions = new ArrayList<LatLng>(geoCodes.size());
のあたりのGeoHashにエラーが・・・。
どうやら
https://github.com/kinjouj/geohash-java に公開されているコードを使うらしいのですが初心者で何をどうすればいいのやらさっぱり・・・。
どなたかこのコードの使い方を教えていただけないでしょうか。
>>848 zipでダウンロードして展開してインポートしてライブラリとして登録する
eclipse ライブラリとかで調べたら出ると思う
eclipse java ライブラリの方がいいか
モーダルダイアログが出来る!って言ってるやつは、 画面回転時とか、画面が後ろに回って削られたときとかにも 余裕で対応出来るんだろうか 俺にはとても対応方法が思い付かないぜ......
>>849 すいません、検索して出てくる情報がjarファイルに関係することばかりなのですが、そのようなファイルが見当たりません。もし適当なページなどあれば提示していただけると大変助かります。
重ね重ね申し訳ありません。
>>851 画面回転、ホームボタン、スリープ、
どれもできたよ、確かに面倒だったけど。
DialogFragment使え
コード書いてるよりUI考えてる時間の方がよっぽど長いです。 ちょっと寂しいのはおっさんだからでしょうか。
仕事しろよ
>>855 アタマワルイムシ...
モーダルにならない...分岐処理は出来ない
なぜアラートdlgから切り替える? 新たなイヤガラセ?
質問です。 android:largeHeap=”true”を使用したいとおもっています。 しかしこの設定はAndroid3.0以降じゃないと使えません。 現在はAndroid2.1〜Android4.2向けに開発しています。 そのためminSDKが7なため、android:largeHeap=”true”を記述するとビルドが通りません android:largeHeap=”true”は3.0以降だけ適用されればよく、2.1〜2.3では不要です。 3.0未満でこの記述を無視する書き方はないのでしょうか? できない場合android:largeHeap=”true”をManifest.xmlではなく ソース側で動的にtrueやfalseにする事はできますか? これが出来ればコードでAndroidのバージョンを確認して制御できそうなのですが。 あともう1点あります。 drawableのようなリソースはdrawable-hdpiやdrawable-xhdpiのようにフォルダ分けで それぞれの画面の大きさにあった画像を指定できますが 同じような感じにAndroidのバージョン別に参照するソースファイルを変更したり Manifest.xmlを変更したりはできないのでしょうか? 例えば src-android3.0 src-android4.0 のようなフォルダ分けにしたり AndroidManifest-Android3.0.xml AndroidManifest-Android4.0.xml のようにはできないのでしょうか?
861 :
デフォルトの名無しさん :2013/09/09(月) 07:04:09.16
質問です。リストの項目のTextViewを交互に色を変えたいんですが 一旦は上手く行くのですが上下にスクロールすると結局全部真っ白になってしまいます… どうやればいいんでしょうか?現在は↓みたいな感じです。 public class CustomAdapter extends ArrayAdapter<CustomData> { protected TextView; @Override public View getView(int position, View convertView, ViewGroup parent) { if(null == convertView) { convertView = layoutInflater.inflate(R.layout.list_view, null); } textView = (TextView)convertView.findViewById(R.id.textView1); if(position % 2 == 0){ textView.setBackgroundColor(Color.WHITE); } } …省略 }
862 :
861 :2013/09/09(月) 07:07:34.72
完全なイージーミスでした… これ↓が原因でした… お騒がせしました。 if(null == convertView) { convertView = layoutInflater.inflate(R.layout.list_view, null); }
863 :
859 :2013/09/09(月) 07:24:19.31
すみません自己解決しました。 android:largeHeap=”true”の件はManifest.xmlを minSdkVersion="7" targetSdkVersion="17"にし project.propertiesのtarget=android-17にすることで出来ました。 ソース分けの方はフォルダ名で分けることはできませんでしたが Activity-3.0under.java Activity-3.0over.java のようにOSバージョン別にActivityを用意し コード内でBuild.VERSION.SDK_INTを参照しIFで該当OSバージョン側のActivityをIntentで呼ぶ事でできました。 Manifest.xmlをバージョンでわける方法はありませんでしたが やりたい事はできましたのでこの方法は必要なくなりました。
そもそも、Manifestをプログラム側で操作できたら Manifestの意味がないと思うんだが
WebViewで表示するhtmlを アプリ以外からアクセスされないようにするための良い方法ってありますでしょうか。 とりあえずとしまして ユーザーエージェント判定と アプリからWebView内htmlに値を渡して その値が正しければページを表示する、といった対処を行おうと考えています。
>>865 その通りでしょう。setUserAgentでユニークなブラウザとして設定してアクセスして
それの一致と、さらにアクセス制限したい場合はGETパラメタにでもパスワード入れればいいでないの
ユニークなブラウザ設定は思いつきませんでした。 それを行えば結構固くなりそうですね。 ありがとうございます。
SQLiteのDatabaseを操作したときに
db-journalが生成されていました。これは何だと思い、
ジャーナルファイルについて調べると、こちらの情報が見つかりました。
ttp://yuki312.blogspot.jp/2012/02/androidsqlite.html その他Englishの情報を色々と見ているのですが、
そもそもジャーナルファイルが何のためにあって、
これが無いとどう困るのか(もしくは困らないのか)
などを理解できていません。
参考になる情報や、もし簡単にご説明いただけるようでしたら
お教え願えないでしょうか。よろしくお願いします。
>>869 public static void showToast(Context _context, String _text) {
if (toast != null) {
toast.cancel();
}
lastToastText = _text;
toast = Toast.makeText(_context, _text, Toast.LENGTH_SHORT);
toast.show();
}
これでどう?
872 :
869 :2013/09/09(月) 17:07:12.41
>>871 ありがとうございます。
そのようにしても駄目でした。
同じ _text に対しては
2回目以降が表示されません。
うーん。
>>869 Toastってわざわざ再利用する必要あるの?
>>873 Toastを表示するボタンを10回連続でタップした時に
どういう動作をして欲しいかによるね。
LENGTH_SHORTの時間表示され続けるToastを10回表示
だと格好悪いでしょ。
SQLiteでinを使うにはどう書けばいいですか?
>>875 ふつーのSQLのinと同じだよ。例えば、
create table user (id int, name text); として、
select * from user where id in (1, 3, 5); とか、
select * from user where name in ('aaa', 'bbb'); とか。
877 :
デフォルトの名無しさん :2013/09/09(月) 18:14:29.83
target=android-8 にてアプリを組んでいます。Android4以上も対象です。 AlertDialogを表示すると 黒背景に白文字で表示されます。 が、以下の場合には何故か背景が白になってしまい、 文字が見えない表示となってしまいます。 (タップすると背景が暗転して、文字列は見えますので、文字は入っています) List<Map<String, String>> maplist = new ArrayList<Map<String, String>>(); // maplist に中身を追加していく(略) SimpleAdapter adapter = new SimpleAdapter(context, maplist, android.R.layout.simple_list_item_2, new String[] { "Name", "Date"}, new int[] { android.R.id.text1, android.R.id.text2 }); new AlertDialog.Builder(context) .setAdapter(adapter, null) .show(); なぜ背景が白くなってしまうのでしょうか。 また、回避方法がありましたらご教授願います。
>>878 いちいち人に聞いてないで、自分で試せばいーじゃん。
ついにAndroidを買いました 最強の開発環境を教えてください!
テキストエディタとコマンドライン これ最強
>>879 where id in (?);
でrawQueryの第二引数にnew String[]{"1,2"}と渡してもダメだったんです
>>872 試してみたら、Android 2.3ではcancel()したtoastをshow()しても表示されるけど、4.xでは表示されないね。
なので、
>>871 なら4.xでも大丈夫なはずだけど、本当に試した?
>>882 その場合はwhere id in (?, ?)として1と2を別々に渡す必要がある。
>>877 Adapterに渡すContextをDialogのContextにする
886 :
869 :2013/09/09(月) 19:10:02.16
>>883 はい。本当に試しました。
2.3.4と4.1.2を所持していますが、
2.3.4では確かに表示されますね。(
>>869 ,
>>871 両方ともOK)
ですが4.1.2ではどちらもNGです。
>>884 なるほど、ありがとうございます
ということはSQLiteStatementでin句の中の個数が変わるようなものは作れないということですね。
rawQueryでsql文を毎回作るしかないということでしょうか・・・
888 :
877 :2013/09/09(月) 19:16:05.89
>>885 レスありがとうございます。
ですが「DialogのContextにする」の部分が
理解できませんでした。
DigaloのContextについてググっていますが
よくわかりません。
>>887 ?を使わずにsqlを作るのはダメ絶対。理由はsqlインジェクションでぐぐれ。
個数が変わる場合は、
String[] ids = {"aaa", "bbb", "ccc", ...};
String sql = "... where id in (";
String sep = "";
for (int i = 0; i < ids.length; i++) {
sql += sep + "?";
sep = ", ";
}
sql += ")";
db.rawQuery(sql, ids);
>>888 DialogにgetContext()ある。Digaloにはない。
>>880 開発環境達は決して闘ったり喧嘩したりすることはありません。
なのでどれが最強とかないです。
みんな優しい子達なので煽らないでください。
>>889 ありがとうございます。それでやってみます。
893 :
877 :2013/09/09(月) 21:02:02.36
>>890 Dialogを生成するときには setAdapter() にて
adapterを指定する必要があります。
そのadapterを宣言するときのcontextとして
Dialog#getContext() を使うとは
どういうことなのでしょうか?
卵が先か鶏が先か、という状況です。
おそらく理解できていないため
上のような疑問を持ってしまっています。
処理の流れをご教授いただけないでしょうか。
>>865 アプリのクローン作る奴はまず通信をキャプチャするからUAなんて簡単なものじゃダメでしょ。HTTPじゃなくて独自のものにすればいい。複雑で作るの大変なほど、アプリ以外からアクセスしにくくなる。
>842です。
>>843 サンクス。layout記述してみたけどダメでした。
ヘルプやAboutを表示するためにloadDataWithBaseURLとassetでversion埋め込んだりして
表示しようとしている単純なものなのですがねえ。
しかも全く同じコードで私の別のアプリではloadDataWithBaseURLで問題出てないのですが、
なぜか今作っているアプリで真っ白になるんです。
loadDataだとOK(画像は表示されません)でloadDataWithBaseURLだとNGってのもなんなのか。
ググってもここの過去ログがひっかかるくらい。解決してなかったみたいだし。
英語でもいろいろ探したが事例もあんまり無いみたい。
どっか呼び出し元アクティビティー(アプリのメインアクティビティ)で
メモリリークでも起こしているんでしょうかね。
根本的に解決しないと後々響きそうなのでなんとか解決したいがもう3日浪費してる。
元のhtmlが間違ってる
>>848 >>853 の件ですが、解決できていないのでどなたかアドバイスいただけないでしょうか。
よろしくお願いします。
>>895 ふと思ったけど、マニフェストにネットワーク関連の許可入れてる?
ローカルHTML表示でも必要になる気がする
>>897 そこのsrcにあるファイルを全部コピペ
当たり前すぎて誰も解説しないレベル
たぶん、htmlがエラーなんじゃない 全く同じコードでちゃんと表示できる方のアプリに 全く同じhtmlが表示できるかやってみなよ
質問と宿題の依頼は違います
>>895 昔逆にloadDataだと駄目でloadDataWithBaseURLにしたことがあるけど
その時に調べた記憶じゃ単に引数が省略されてるバリエーション関数じゃなかったはず
その辺りで挙動が違うんだろうとは思うんだけどなんだろうね
StringBuilderを使おうと考えているのですが、 サーバーなどで利用する場合と違って、 スレッドセーフにすることは考えなくても問題ありませんか? 問題があるとしたら、どのような場合でしょうか?
904 :
デフォルトの名無しさん :2013/09/10(火) 04:33:24.31
SharedPreferencesで保存したデータについてなんですが これってユーザから見えるというのは知ってますが 簡単に書き換えも出来ちゃったりするんですかね? 別にデータを見られる分には良いんですが ちょっとユーザから書き換えられると不味いんですよね… どうなんでしょう? EclipseのDDMSとかから見えるらしいですが…
>>904 簡単に書き換えれるかどうかはおいといて、暗号化すべき。
暗号化とか愚策だろ・・・ 見られても書き換えられても良い設計にすべき
Android 4.0.3 WebViewでFlash見れた人いる? ググっていろいろやってみたけと、見れない…。 徹夜だ、眠い(-o- )
>>899 ありがとうございます。
srcファイルの中身だけ必要で、あとのファイルは特に関係がないということでしょうか?
四択クイズアプリ SQLiteとdata.csvを使って textviewとbutton1,button2,button3,button4に 問題と解答を表示するやり方を教えて下さい
自分で勝手にやれ 以上
>>909 問題と回答データ読み込み
問題表示と回答ボタンの設定(表示とリスナー)。
正解不正解の処理
の繰り返し
あー表示か。findViewByIdとsetText。
eclipse付属+INTELのATOMエミュレーターより、軽くて手軽なエミュ有りませんでしょうか 出来れば無償で
実機でやればいいだろ
<string name="hello_world">Hello world!</string> のように書いてXML間で値を拾うのはわかるんですけど 数値データ書いてプログラムソースから拾うにはどう書けばいいですか?
GenyMotion 速いね。 まったくもたつくことなく実機よりもサクサク動くので、 Androidの未来の姿を見ているみたいだ。 自分のとこのPCでは描画が安定しなかったけど。
>>917 そのstringのとこに数値データ書いて、プログラムから読んで、数値に変換。
これしか方法無い…
プログラムから読む書き方がわからないのです
情報提供料2500円で教えてやろう
>>920 「android xml string 読み込み」とかでググれ
礼もろくに書けないのか
ありがとうございますん
質問があります。 DBから検索して表示するプログラムを作っているのですが 入力された文字列を複数のテーブルから部分一致で探す所が上手くいきません。 String query="入力された文字列"; String table="table_name1,table_name2"; String[] columns={"name1","name2"}; String where="name1 LIKE '%' || ? || '%' OR name2 LIKE '%' || ? || '%'"; String[] whereArgs={query,query}; cursor=db.query(table, columns, where, whereArgs, null, null, null); 以上のようにしたのですがエラーになってしまいました。 whereの指定が間違っていると思うのですがどのように変更すればいいのでしょうか?
無能で質問する奴って、エラーの内容を絶対明かさないよな
あるディレクトリ内のファイル一覧は File#listFiles() で取得できますが、 これをファイルの更新日時順にソートした状態で 取得したいです。 上記は無理で、listFils() で取得した File[] の File#lastModified() を用いて 自前でせっせとソートしないといけないのでしょうか?
はい 自前でソートといっても Arrays.sort に自前の Comparator を渡す程度でいいと思いますが
931 :
929 :2013/09/10(火) 23:53:08.10
>>930 お恥ずかしいことに、その方法を存じませんでした。
そのキーワードにて調べます。ありがとうございました。
NDKでassets画像を読み込んでjavaのViewに表示するライブラリ作ってみたけど java実行>ndk読み込み>java表示 5000ms java実行>java読み込み>java表示 2600ms ってタイム測ってみたらjavaだけでやったほうが早かった・・・ NativeActivityだけでやったらまた違うんだろうけど NDKを使えば確実にjavaより速くなる(゜∀゜)!と思ってたわ・・・
NDKで遅くなるんだ転送のボトルネックかなポインタ渡しなら関係ないだろうけど
935 :
デフォルトの名無しさん :2013/09/11(水) 03:39:23.83
SharedPreferencesで書き込んだデータを外部から弄る事は出来るのか?と 質問してた者ですが、起動回数をカウントしてそれを保存し ある回数以上になったらという判定を内部でしたいんですが 結局暗号化してもその暗号化データ自体を内部で復号化するので 例えばある端末のデータをそのままコピられて別の端末に入れられたら 終わりじゃないでしょうか? SharedPreferencesのXMLデータが外部から簡単に書き換え出来ないなら たとえ外部から見られても問題ないのでこのままでも良いんですが… SharedPreferencesのXMLデータは簡単に書き換え可能なんでしょうか?
端末のID
アプリの購入情報をプリファレンスに保存するとかいう話があるので やっぱり簡単には書き換えられないように出来てるんじゃないでしょうか? そうでないと購入情報とかそのあたりのフラグとかまったく無意味になってしまいますよね?
>>935 AndroidはRoot取ればAndroidシステムDBを値を書き換えて
機種固有番号の変更だって可能だから、絶対書き換えられないという保障は無い。
prefernceのxmlデータは変更しやすいファイル形式だから、root取られてると余裕で修正される
非root端末ならpreferenceフォルダにはアクセスできない端末が多い
>>936 端末のIDを暗号鍵にするという事ですか?
>>938 機種固有番号の変更まで出来るんですか…
じゃroot取られてたらプリファレンスとか余裕なんでしょうね…
困ったな… みんな購入情報とかどうやって管理してるんでしょうかね…
>>941 購入情報はgoogle play課金APIでgoogleに問い合わせる
端末単位じゃなくてgooleアカウント単位の購入チェックができる
rootだと端末固有番号は書き換えられたけど、googleアカウント周りの変更はできなかったから多分確実
プロフィール情報
課金APIがあるんですね。 アクティベーションとかやらないといけないのか…orz もっと簡単に安全に保存出来ないかな…
927で質問した者です。
お恥ずかしいことに、どんなエラーが出たのかを確かめる方法が分かりません。
eclipseを使用しているためデバッグのエラー表示を見ればいいところまでは分かるのですが、
エラーログがたくさん流れていて何がなにやら、な状態です。
>>933 tableの指定はこれで合っています。
各テーブル別々で部分一致を試すと上手く動きます。
>>944 自前のサーバを用意してサーバ上で必要な情報を管理すればいいんじゃない
端末をいくらいじってもサーバ上の情報を書き換えられるはずないし
ところで起動回数って常にkillされがちなAndroid上では意味不明な数値になりかねない気が
>>946 そうですね。サーバで管理するのが良いかも。
レスありがとうございました。
任意のタイミングでgmail等のアカウントを同期させて同期完了時にインテントを受信する方法ってありますか?
ぐぐれ
>842>895だけど 解決できました。 メインのアクティビティのonPauseでWebView.pauseTimers()をやっていたのが原因でした。 いきなりaboutのアクティビティを表示したり、onCreateから表示したりonResumeやonPauseをコメントにしたりして onPauseをコメントにしたら正常に表示したのでその中で怪しい奴はこいつしかいない、 で削除したら正常に表示されました。 pauseTimersをググった後他人様のblogを見つけて、全てのwebviewの表示止めるので注意、アクティビティ遷移後も止めるよ と書かれていて、あーこれだったかーと思いました。 なぜかloadDataだと表示されるのが謎ですが。 以上なんとかこのスレ終了までに報告できたのでよかったです。
これだから素人の「自分は何もしてません」は怖い。
Androidのバイブ機能って、manifestに書かないと使えないんでしょうか? 以前何かのアプリでmanifest記入無しで使えたような気がするのですが
>>952 manifestってのはインストール前に「こんな機能ありますけどインストールして本当にいいんですかね?」
ってユーザに確認するためにあるわけで。
それを記入無しってのはAndroidの最低レベルのセキュリティをさらに低くするわけで
いずれにしても書かなきゃ機能的にも使えないんだから書けよ
そんなことは聞いてないんですが
SurfaceViewでクリックした場所に丸を表示するというプログラムを組みました。 横に4回クリックをすると 1: ◯ 2: ◯ ◯ 3: ◯ ◯ ◯ 4: ◯ ◯ ◯ ◯ と表示される予定だったのですが、実際は 1: ◯ 2: ◯ 3: ◯ 4: ◯ ◯ のように、なぜか2回おきに同じ描画が繰り返されます。 なぜか遅れて同じ描画がされるのでしょうか?
何を言っているのかよくわからないが、プログラムがおかしいのでは?
いやたぶんおかしいのはプログラムだよ
トリプルバッファリングなんじゃね
961 :
956 :2013/09/11(水) 21:06:16.73
Libroってページのプログラムをコピペして背景の塗りつぶしだけ消したのが悪かったかな。 にしても、以前の描画が遅れて再描画されるのは理解できない。 見直してみます。
コンピュータの画面には、実際に画面に表示している「表」の画面と、画面に表示されていない「裏」の画面があるんだ 表示中の画面に直接絵を描くと、描きかけの途中の絵が見えてしまうので、よろしくない そこで、画面の裏側に描き込んで、完成したらくるっとひっくり返し、表に見せるんだ そのとき裏側に戻ってくるのは、今まで表に出していた絵、つまり 2 フレーム前の絵になる これがダブルバッファリング SurfaceView も同様のことをやっている トリプルバッファリングというのは、さらに裏画面を 1 枚追加して、 3 枚の画面を切り替えて使うものだ これは V-Sync 待ちの間にも次の絵を描き始めたいという要求に応えるためのものだけど、 ともかく画面が 3 枚になると、ひっくり返したときに戻ってくるのは 3 フレーム前の絵になる 普通は、新しいフレームを描く前に毎回、画面全体を消去するので、何フレーム前の絵が戻ってくるかは問題にならないわけだが、 消去しなければ、そうなる
からかって、答えたつもりになってるやつは一度死んで?
>>964 みたいな「とんでも日本語」をよく目にするようになったな。
こいつの文章、最後に「?」が付いているよね。
この「?」って、どういう意図で付けたのだろう。
そしてこの文章、どういうイントネーションで読んだら良いのだろうか。
「一度死んで」の「で」の音を高めに出せば良いのだろうか。
ものすごく気持ち悪い。不快になる。
読点の場所も可笑しいし。気持ち悪い。
いや、おれも現時点では
>>962 が濃厚だと思われ。
野郎どもがセイラさんの真似すんなよ
969 :
デフォルトの名無しさん :2013/09/11(水) 22:42:54.21
Android今日初めててをつけたんだが、Javaに比べてやりにくくない?
971 :
956 :2013/09/11(水) 22:51:10.55
>>962 非常にわかりやすい説明ありがとうございました。
てっきり、描画処理が複数回実行されているのかと思っていましたが、
その仕様なら処理の重さ的に問題なさそうです。
973 :
デフォルトの名無しさん :2013/09/11(水) 23:17:01.60
フェルたんがゆったんの席に
誤爆><
MyPreferenceActivity extends PreferenceActivity を作っているとしまして、 // プリファレンスの表示 startActivity(new Intent(this, MyPreferenceActivity.class)); // key_hoge のある位置まで移動(ということをしたい) ということをしたいです。 イメージとしてはListViewのsetSelectionFromTop関数の ようなことをしたいのですが、 プリファレンスの画面で表示位置の指定は可能でしょうか? 可能でしたら方法を教えていただきたいです。 よろしくお願いします。
PreferenceActivityの親はListViewだから同じような感じでできないかな
ぐぐれ
>>945 誰も答えないので、あまり詳しくない俺がエスパーしてみよう
きっと二つのテーブルでカラム名が被ってるんだよHAHAHA
ていうかDBスキーマもエラーメッセージも無しで分かるかボケェ!
そもそも二つのテーブルのリレーションが何処にもない気がするが
気のせいだろうか
>>945 likeの後ろになんでそんなにいっぱいシングルクォーテーションあるん?
>>927 エラー原因はわからないが、SQLインジェクションには注意しろよ
一つのアプリの中の複数のアクティビティ間で一つのファイルを共有するって上手い方法ない? MainActivitiとSubActivityで一つのdata.datを読み書きってやりたいのだけど BufferedWriter/Readerの引数のコンテキストでエラーが出る(´・ω・` )
MACって iphoneもandroidもいけるかのように聞くけど もちろんjavaはビルドできるけど NDKでC++はできないのですよね?
どこにそんな事が書いてあった?
んなこと聞く人には無理だね
>>982 Application継承クラスにつっこんでやりとり
くっそうmac万能かよ
mac万能なんじゃなくて、iOS SDK無能なだけ
Robotium 使って Toast が表示されるかをテストしたいんだけど、どなたか分かりませんかね
990 :
976 :2013/09/12(木) 19:03:51.30
>>977 ここで質問をする前に
PreferenceActivity setSelectionFromTop
などをキーワードにして検索していますが、
同じ事例は見つかりませんでした。
全く同じ名前のメソッドが無いにしても、
上記キーワードで何かしら見つかるかと思いましたが
どれだけ掘っても無いんですね。
どなたかご存知ないでしょうか。
雑談しようぜ
findViewWithTagはsetTagの第二引数に指定したオブジェクトで検索をすることはできないのですか?
ぐぐれ
>>990 static変数でググれ。
Javaを根本から見直すことを勧めるくらい低レベルな質問であることを自覚した方がいい。
996 :
990 :2013/09/12(木) 21:30:08.10
>>995 static変数ですか?
あれ、私のやりたいことが伝わっていないのでしょうか。
PreferenceActivityを継承したActivityに遷移する際に、
普通にstartActivity() を実行しただけだと
Preferenceが並んでいる内の一番先頭部分が表示されますが、
そうではなくて、
例えば10個目のPreferenceが画面の一番上にくるように
スクロールされた状態で表示したい、ということなのですが。
Javaの根本がどうとかいう話ではなく、
「そういうAPIがありますか?何か方法がありますか?」
という質問です。
勘違いをしているようでしたら、本当に申し訳ありません。
ぐぐれ!
ひたすらぐぐれ!
無我夢中でぐぐれ!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。