Androidプログラミング質問スレ revision54
■ このスレッドは過去ログ倉庫に格納されています
>>373-374
確かに暴走した時にキル出来なくて、
スマホの再起動くらいでしか戻れない迷惑なアプリですよね・・・
考え直してみます なんかここで質問されるのって普通じゃ思いつかないような変な使い方が多いような気がする笑 普通の使い方ならば質問してないでgglksとか言われて終わら
されるような気がするので正しく機能しているということではw
ただ普通の使い方がAPIの更新という名目の元に毎年
ドラスティックに変更されてしまうので付いていけないというか
付き合いたくないってのはあるかな・・・ Gradleってなんでオンラインじゃないとだめなんだろ?
なにしてるんだろ、まさかこちらのソース送ってるとかないよね mavenからダウンロードしてるからだろ
オフラインでも使えるぞ >>373-374
考えてみたけど、思いつかなかったです・・・。
症状としては、数時間後にアプリが勝手にバックグラウンド(ホームボタンを押した状態)に移動してしまい、
隠れてしまうのを回避したいです。
根本的な解決だと移動する原因を突き止めることなのでしょうが、
アプリが勝手に隠れる原因って何でしょうか?
アプリはFLAG_KEEP_SCREEN_ONで常時画面ONにしていて、
他にアプリが起動した様子は無く、WiFiも切っています。 >>382
電池の最適化から除外してもそうなるの? >>382
そのフラグって起動している間は画面をオフにしないってだけでは?
常時そのアプリをアクティブにするものとは違ってたかと >>383
ホワイトリストには入れて無かったです。
>>384
画面ONで他のアプリが動かなければ、常時アクティブになるのかなと思ってました。
ゾンビ化させるつもりで、onPause()の時にonResume()を呼び出してみたけど、ダメでした。
@Override
protected void onPause()
{
super.onPause();
onResume();
} >>385
ならそのアプリを最適化から除外した上でどうなるか確認しよう。 ありがとうございます
確かに電池の最適化なんて何やってるかわからないから、
まず除外して動かしてみます 普通は勝手にバックグラウンドには行かないし、スリープ復帰後もフォアグラウンドのままだし
その端末がスリープに入るとアプリがすべてバックグラウンドに行く仕様とか
(それも変な仕様だけど。または変なアプリが入ってるとか) クラッシュしてるんじゃ?
バックグラウンドに行く原因を特定するほうが先だと思うが startForegroundServiceでレシーバー常駐させてても
受信しない事あるんだが… フォアグラウンドサービスはかなり殺されにくくなるだけで
絶対に殺されないものではないけど
途中で殺されてたりしない? Logcatか何かで分かるのかな?
分かってもどう対策すればいいのやら… google playで公開しているアプリのユーザーが、
とても良いアプリだからdonateしたいんだが的なことを英語のメールで送ってきたんですが、
非消費型アプリ内課金でdonate機能を付けることは問題ないんですかね
つまり、何も機能追加とかはしないけど単にお金を貰うだけということになるんですが もしくはそういう機能のあるアプリって既にgoogle playで公開されてたりしますか google的には30%の手数料収入が入ってくるわけだから禁止する理由もないのかな >>395
課金含めて作成したことはないですが、ずっと使ってるghost commanderって無料のファイラーにはdonation機能ありますね。
paypalに遷移するのでgoogleに一部落ちるってことはないのではないかと思われますが。
https://i.imgur.com/JHl7KIs.png
https://i.imgur.com/9Mwcvgu.png アプリ内課金までGoogleに取られたら堪らないな あーgoogleに手数料取られない形のアプリ内課金もあるんですねー とりあえずdonate機能追加したわ。これで大金持ちやな そういえばGoogleは寄付と課金は別に考えてたな ブログとかwebサイトでも作ってそこにdonate機能つけて、アプリからそこにリンク貼ればいいんじゃね Googleは10%じゃなかったっけ?
リンゴと窓が30%で。
10%でも高すぎると思うんだけさぁ。 AndroidStudio 3.0.1を使用しています。
Android Profilerにてメモリ使用量を確認したところ、「Native」が開始直後は10MB程度から、数時間後に160MBまで増えているところまではわかりました。
ただ、このNativeの何が増えているのかはわかりませんでした。
([Dump Java heap]で開始直後と数時間後を比較すると、FinalizerReferenceやbyte[]は1.5倍程度にしか増えていませんでした)
この場合、何を見れば良いのでしょうか?
よろしくお願いします。 画面はこんな感じです。
http://fast-uploader.com/transfer/7078879864621.jpg
Retained Size 49248559Byte ≒ 47MByte 使用ってことでいいのかな?
ただ上のグラフだとNativeが増えて、Total 192MBのメモリを使用しているけども。 >>393
>>396
俺も似たようなレビューを数件貰ってたから、広告非表示や機能追加で課金を検討してたけどPayPal経由で寄付実装なんてのもあったのか
Googleに怒られるかと思ってた Android Studioで大きな画像を表示してピンチイン・アウトをしたいと思い、
https://qiita.com/satoshinew/items/a5fa3711d76429159dcb
これを使いたいのですけど説明の意味がわからないので解説してください。
(Android Studioの設定は完了して「Hello World」の文字は表示されてます)
まず、導入の方法は2つあるようです。
「ライブラリプロジェクトをインポートする」場合、
https://github.com/satoshinew/GestureTransformableView/tree/master/GestureTransformableView
このページのどれをどうすればインポートできるのでしょうか?
「gesturetransformableview.jarを直接libsに突っ込む」場合
https://github.com/satoshinew/GestureTransformableView/tree/master/GestureTransformableViewSample/libs
このページには「android-support-v4.jar」「gesturetransformableview.jar」「picasso-2.2.0.jar」
と3つのjarがありますが
「gesturetransformableview.jar」だけをクリックして次の画面でダウンロードすればいいのでしょうか?
(ちなみに、Picassoというのは大きな画像を取り込める機能をもつライブラリ?のようですが
このPicassoも使いたいと思ってます。
このページにある「picasso-2.2.0.jar」をDLして突っ込むとPicassoも使えるようになるのでしょうか?)
そして次の
------------------------------------------
xmlで宣言する場合は 〜 (コード) 〜
直接書いちゃう人は 〜 (コード) 〜
------------------------------------------
についてですが
「xmlで宣言する場合」というのは「activity_main.xml」のところに書けばいいのでしょうか
「直接書いちゃう人は」というのは何をどこに直接なのでしょうか
よろしくお願いします。 >>409
ライブラリプロジェクトのインポートやlibsやjarについて
詳しく書いてある本教えてください。
>>410
こんな短期間でやり方変わっちゃうんですか? 公式に書いてあるんだからまずはそれを読むこと
そして4年は短期間ではない そもそもAndroid Studioじゃないんじゃねえの
4年前に最新のeclipaeでやったらうまくいくかもよ Androidの世界で短期間ってせいぜい半年くらいじゃないの みなさんありがとうございます
広大なマップの上を移動していくゲームのように
大きな画像を無劣化で取り込みたいです
普通にimageviewで入れると勝手に小さくリサイズされて荒くなるけど
リサイズなしで取り込むにはどうしたらいいでしょうか
経験ある方教えてください
https://developer.android.com/studio/intro/index.html
この公式のガイド見てもよくわからないです 画像全体のサイズにもよるけど、簡単なようで難しいのでないか 端末画面のサイズ超えそう
それよりメモリオーバーしそう 画像を表示させるだけでいいなら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つ) があるぞ。 ■ このスレッドは過去ログ倉庫に格納されています