Androidプログラミング質問スレ revision54
■ このスレッドは過去ログ倉庫に格納されています
画像を表示させるだけでいいならBitmapRegionDecoderで必要な範囲だけ読み込む
それを元にゲームを作るのなら最初からゲームエンジンを使ったほうがいい Android ProfilerのMEMORYを見ていると、
GC発生毎にNativeが20〜50Byteほど増えるのですが、
GCの発生回数カウンタみたいな物はあるのでしょうか? >417
エスパーしてリソースフォルダから読み込んでるとするとnodpiフォルダを作って
そんなかに入れとけば拡縮されないよ ASで新規プロジェクトでMapを選んで作成した場合
build.gradleで
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.google.android.gms:play-services-maps:12.0.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
'com.android.support:appcompat-v7:27.1.0'の部分に赤の破線が出てしまいます。
通常のプロジェクト作成で自分でimplementation 'com.google.android.gms:play-services-maps:12.0.1'を
追加した場合も同じです。 エラーの内容の詳細を見ると次のようになっています。
All com.android.support libraries must use the exact same version specification
(mixing versions can lead to runtime crashes).
Found versions 27.1.0, 26.1.0. Examples include com.android.
support:animated-vector-drawable:27.1.0 and com.android.support:support-media-compat:26.1.0.
There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs.
One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion).
すべてのcom.android.supportライブラリは、まったく同じバージョン仕様を使用する必要があります
(バージョンを混在させるとランタイムクラッシュにつながる可能性があります)。
バージョン27.1.0、26.1.0が見つかりました。 例にはcom.androidがあります。
サポート:アニメーションベクタ描画可能:27.1.0、com.android.support:support-media-compat:26.1.0。
互換性がない、またはバグにつながるライブラリやツールやライブラリの組み合わせがいくつかあります。
このような非互換性の1つは、Androidサポートライブラリの最新バージョン(または特にtargetSdkVersionよりも低いバージョン)ではないバージョンのAndroidサポートライブラリでコンパイルされています。
特に26.1.0を指定した記述もしていないのになぜこうなってしまうのでしょうか?
環境構築になにか問題があるのでしょうか?
どうすればこの赤破線は消せますか? AS3.0でプロジェクト新規作成したみたが26で作られて特にエラーはでないな
AS3.1は糞だからゴミ箱に入れてAS3.0でやり直したらいいんじゃね AS3.1.1で試してみたが確かにエラーがでるね
appcompat-v7:26.1.0に変えて、compileSdkVersionとtargetSdkVersionを26に変えればいいんじゃね 自作ホームアプリを起動したあとに他のアプリから呼び出すとactivityが二重に起動してしまいます。
launcherModeはsingleTaskに設定しているのですが、原因がわかりません。
どなたか原因わかる方いるでしょうか? >>425
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.google.android.gms:play-services-maps:12.0.1'
の依存でコンフリクトが起きているようで上にあるよう26に戻すか、オレのアプリは特にクラッシュしないので特に気にしていない >>429
それらを26にして破線を消すことができました
ありがとうございます
実機で実行した時になぜかクラッシュするようなので3.0を入れて試してみます AS3.1が出たばかりで初心者にはタイミングが悪い ASの所為でもなく、敢えて言えば個々のライブラリが悪い。
けれど、この手の問題は良く発生するから、
implementation 'com.github.bumptech.glide:glide:4.6.1', {
exclude group: 'com.android.support'
}
という逃げ方があるのは覚えておく。 カウンタを時間に変換したいと思っていますが、
SimpleDateFormat():スレッドセーフでは無い
String.format():すごく遅い
複数スレッドでたくさん時間に変換したいので、スレッドセーフかつ速い変換って何が良いのでしょう?
ググってもデメリットの説明ばかりで、代替え案が出てこないので教えてください。 Dateは確かにmutableだけど、DateFormat使うに当たってスレッドセーフが必要なケースってあるか? 非同期処理の確認でSystem.nanoTime()で、実行時間を見てます。
この為に同期処理にってのもナンセンスですし・・・。 いやいやw
その処理のどこにスレッドセーフが必要ですか? activityのintentfilterにcategory.launcherとcategory.homeを設定しているのですが、ホームボタンから起動される時と他のランチャーから起動される時でactivityが複数起動してしまうのですが、単一のactivityとして起動させるにはどうしたら良いでしょうか?
playstoreの他のホームアプリをいくつか試したところ同様の現象が確認出来ました。いい解決方法わかる方いたら教え下さい。宜しくお願いします。 >>446
singletaskに設定してますが、二重起動してしまいます。他のmodeも全て試しましたが駄目でしたね… サービスが寝ないようにするにはインテントをずっと投げ続けてあげないと駄目なのかなぁ アプリをユーザに終了させないにはどうすればいいんですか?
安居酒屋にある、タブレットで料理を注文する端末のようなものを作りたいんです
一つの技としてホームアプリにしてしまう方法があるようですが、それ以外の方法があれば教えてください DroidKaigi 2018 - Kioskアプリと端末の作り方 / tomoya0x00 [JA]
ttps://www.youtube.com/watch?v=ofUJaIiaVlw&t=1191s WearとPhoneのデータのやり取りでイベント(onDataChanged)でのデータ取得は
できているんだが…
データを自分から取りにいくために
dataItems = Tasks.await(Wearable.getDataClient(context).getDataItems());
を試してみたらうまくいかなかった
データ(キー)は複数あるんだが、1つしか取得できない状態
どうすればいいんでしょ? iPhoneは使ったことないので知らないのですけど
Androidアプリってなんであんなに更新頻度が高いんですか?
あれは明らかにパケット消費増大の一因になってますよね
更新頻度が高いGoogleが目立つというのもあるのですけど
Google以外のアプリケーションもそれなりの頻度です
プログラマー視点からみてアプリケーションの更新のしやすさとかがあるのでしょうか? 実際の判断は違うかもしれないけど
素早いリリースを繰り返すことでバグが含まれていたとしても問題になる前に対処できるから
もちろんテストをしないって意味ではないけど iOSだと審査あるから念入りにテストしてアプデするけど
Androidだと審査ないから結構気楽にアプデしちゃうのではないかと
昔ろくにテストせずアプデしたらすぐにバグが見つかって次の日アプデとかよくやったわ アップデートはいいんだけどそのたびにアクセス権限じわじわ増やしていくの止めて欲しい Androidの正規表現で a( の文字を探したいです。
(を文字として使うので\付きで
ptn=Pattern.compile("a\(");
matcher=ptn.matcher("123a(0)");
とすると1行目のcompileでエラーになり
ptn=Pattern.compile("a\\(");
と2つ付けると通りますが2行目のmatcherでエラーになります。
( の文字の検索はどう書けばいいんでしょうか? >>460
どういうエラーが出るのかコピペしてくれ。 一行目のcompileのところではエディタに赤線で
スケープ・シーケンスが無効です (有効なものは \b \t \n \f \r \" \' \\ です )
と出ます。
2行目のmatcherでは実機実行ではクラッシュ、デバッグモードではエラーというか
matcher.classのタブが出て クラスファイルエディター ソースが見つかりませんでした。
jarファイルC:\android-sdk\platfoems\android-21\android.jarにソース添付がありません。
と出てデバッグの進行ポイントがどこかえ消えて実行継続できなくなります。
今ちょっと変えてやったらmatcherは通ってd=matcher.start();の位置取得所のところで出ました。 "a\\("としたときでmatcherのfoundのステートはfalseとなっています。
"a\("では実行すらできません。 この順でやるとどう?
Pattern p = Pattern.compile("a\\(");
Matcher m = p.matcher("123a(");
boolean f = m.find();
int ptr = f ? m.start() : -1;
ptr に最終的に何が入る? 3です、ああ取得できてますね
最初matcherでひっかかってたのは何だったんだろう 実際はもう少し複雑で a( だけでなく a) も探したいのですが
Pattern p = Pattern.compile("[ab]\\(|\\)");
これではだめなのでしょうか、うまくいきません。 >>466
それなら「(a\\(|a\\))」かな グループ化して括弧をつけるんですね
目的のことができそうです
ありがとうございました AACのLiveDataがよく分からないんですけど、
これってObservableFieldとなにか違うんすか >>467
俺なら「a[\\(\\)]」かな
正規表現とかやってると C# の @"a[\(\)]" みたいなエスケープを解釈しない文字列表現が欲しくなるな 確かイベントの発生の仕方に違いがあった。
LiveDataは、ソースの通知の都度発生するけど、Ob〜の方は変更があった時のみ発生。
だから、通知の多いLiveDataをそのままViewに結びつけちゃうと、更新がヤバイことになる。 ObservableFieldを糞にしたのがLiveDataなんすか >>471
Kotlin には """ (ダブルクォーテーション3つ) があるぞ。 Java11でやっと対応するね。
Androidが対応するまで最低1年、シェアが90%超えるまでさらに最低3年はかかるけどw >>474
それ、多分pythonのパクリ
C++に比べたらたいしたことない 既存言語の機能を取り入れたり参考にしたりするのを悪いといってるのではなく、それについて「パクリ」という用語を当てはめているのが不適切だと言われてるんでないの? >>:符号付きビットシフト
>>>:符号無しビットシフト
これは逆にして欲しい。
もう無理だろうけども・・・。 javaは歴史ももうかなり長いのに
イベント関係でいちいちインターフェースを継承したクラスのインスタンスを作成して、
そのなかに処理を記述して〜みたいな読みにくいとか不必要な記述はなんとかならんかったのか
一方C#はメソッド参照用の専用の型を作ることで解決した >>478
JavaはCからのパクリ多いよな。演算子とか文法とか。プログラマーの学習量を減らして移行を楽にさせるためにわざとそうしたんだろうけど。 数年前からほとんど
アンドロイド向けの技術書でなくなったね
昔出た本のバージョン上げただけの本ばかりになった ASでminSdkVersion 9にすると実行しようとした時に’最小は14だ’といったメッセージで怒られて実行できませんが
実行できないこともないと聞いたことがあるんですがどうやれば14より下で実行できるんでしょうか? >>486
TargetSdkVersionを26以降にすると、minSdkVersionは14以降になるよ。これはもう仕方のないこと。
TSVを25以前にすれば13以前にもできるけど、今年の8月からはバージョンアップできなくなる。 マシンAとBがあってAだけデバッグモードができなくなりました
AのEclipseではデバッグ実行すると実機でデバッグのおなじみのダイアログ表示がされたままでその先に全く進みません
ASではブレークポイント設定しても全くそこで止まることなく通常の実行のようになってしまいます
マシンBのEclipseをまるごとコピーしてマシンAで実行しても状態は変わらず、SDK側に問題があるのかと考えたのですが
ASとEclipseのSDKは分けて別のものを使っています
デバッグができるようにするためにはどの辺を弄ればいいでしょうか? デバッグアプリの選択というのでASの方はえきるようになりました、Eclipseは変わらないです
USBデバッグ許可の取消しというのがAndroid4.x 6.0 共に見当たらないのです ごちゃごちゃやってて今試したらなぜかできました
タイミングでできるときとできない時があるようです
>>491
もうほとんどメンテしないんですが一部昔のアプリが残ってるんで 以前はプログラム中から読み込む画像(アイコンではなく)はdrawable-mdpiに置いておけば
どの解像度でも読み込めるというのがあったんですが
現在はdrawableとmipmap-anydpi-v26というのがあるようですが
どちらに置いておけばどのモードでも読めるんでしょうか? Android Studio 入れて何かアプリ作ろうかなと思っています
「2.3で更新を止めてる」みたいな意見を見かけたんですが、
最新版入れても、不安定であるとか、重いとか、何かデメリットないですか?
それとも今からインストールする人には関係なくて素直に最新版を入れて問題ないでしょうか?
おすすめのバージョンとかありましたら教えてくださると助かります 2.3から3.1だと勝手が変わってしまうからって言うのが大きい気がする
初めてなら3.1から始めても問題はないと思うよ 最新版って言っても、canaryは入れるなよ
今は3.1.2だ メモリ16G推奨とかちらっと聞いたから2.3で止めてたけど、公式では8Gと書いてあるのか 16GB推奨とか恐ろしい話だね
自分はいま4GBでやってるけどまあまあ我慢できる 4GBの時は結構HDDガリガリしてたけど12GBにしたらかなり減った
あとエミュで2GBメモリの設定しても平気だしAS2つ以上起動もできる
今のとこ最大9GB以上使われたことないけど やっぱ色々快適にやろうとすると16Gくらい欲しくなるよなぁ
ググりながらだからブラウザも開いてたいし…
8Gでやってるけど調子悪いとchrome開いてるだけでたまにビルド中out of memory起こるわ
>>499
4Gまじか
エミュとか起動したらギリギリならない? 画面中央下部に配置したボタン(FABのような丸形状)を左右にドラッグ(またはフリック)に連動させてviewpagerのページ送りをしたいと考えています。
ボタンに関してはonTouch() MotionEvent.ACTION_MOVE、GestureDetector#onFling()にて指に追従させることができたのですが、ボタンの移動量に連動させてviewpagerの左右方向に動かすにはどうすれば良いでしょうか。
viewpagerを直接左右にスワイプするのではなく、またボタンの動きに合わせたいためviewpagerのページ番号の指定はしたくないです。 android studioでアプリの勉強を始めたのですが、フリーズして反応しなくなります。
PC自体の再起動もできないので、強制終了するしかなくなるのですが
原因や、対処法を知ってる方いらっしゃいますか?
Lavie
プロセッサ intel(R) core(TM) i7-4700MQ CPU `2.40GHZ
実装Ram 8.00GB(7.76 GB usable)
です。よろしくお願いします。 PC自体が重くなってんじゃね
初期化してSSD換装したら >>504
CPUも遅いしメモリも少ないので処理に時間がかかっている
だけだと思われ
1時間くらいほかしといて戻ってくるようならPCのスペック不足 >>505,506
ありがとうございます
スペック高いPCを買ってきます ASでいつもMainActivity.java開いてる状態なんですが
実行した後、他にいくつか同じパッケージに置いてあるものの1つのxx.javaがエディタで勝手に開いてアクティブな状態になってしまいます。
これはどういう条件でこの現象が起こるんでしょうか?
毎回面倒なのでこれが起こらないようにするにはどうすればいいでしょうか? エラーはないけど 〜は使用すべきでありませんの打ち消し線は入ってます
これのせいか 自アプリからの暗黙的インテントで、ユーザーが選択したアプリのパッケージ名を知る方法ってありません? android studio 3.1を使ってみたのですが
パレットからViewをactine.xmlにドラッグできないのはなんででしょうか?
何か設定が必要なの? fragmentで色々弄った結果をactivityの変数に保存しておきたいんですが、
普通どうやるもんですか? 最近ならviewmodelに置いとくのが一番楽じゃないか?
リスナ定義もいらんし 自分以外の他アプリで再生されてる音楽が、
最後まで再生されたとを検知する方法ってありませんか? ■ このスレッドは過去ログ倉庫に格納されています