Androidプログラミング質問スレ revision54

■ このスレッドは過去ログ倉庫に格納されています
2017/11/15(水) 05:24:17.80ID:F5cxE2Dc
※プログラミング自体が初めて!なあなたには↓↓↓こちらへ
スレ立てるまでもない質問はここで 146匹目
http://mevius.2ch.net/test/read.cgi/tech/1487825717/
Eclipse統合M36【Java/C++/Ruby/Python/Scala】
http://mevius.2ch.net/test/read.cgi/tech/1503723668/
★★Java質問・相談スレッド180★★
http://mevius.2ch.net/test/read.cgi/tech/1492780397/
****オススメ関連リンク****
■ TechBoosterhttp://techbooster.org/category/android/tableofcontents/
■ Androidメモhttp://www.saturn.dti.ne.jp/npaka/android/index.html
■ 逆引きAndroid入門http://www.adakoda.com/android/
■ Androidプログラマへの道http://wiki.livedoor.jp/moonlight_aska/
■ Android Wiki*http://wikiwiki.jp/android/

****公式リファレンス****
■ Android developershttp://developer.android.com/index.html
■ ソフトウェア技術ドキュメントを勝手に翻訳http://www.techdoctranslator.com/
■ 日本Androidの会http://www.android-group.jp/
■ StackOverFlowhttp://stackoverflow.com/questions/tagged/android

****前スレ****
Androidプログラミング質問スレ revision52
http://echo.2ch.net/test/read.cgi/tech/1479305887/
Androidプログラミング質問スレ revision53
http://mevius.2ch.net/test/read.cgi/tech/1488052551/
2018/06/05(火) 17:37:08.96ID:doXyfOzr
なにか問題でも
639デフォルトの名無しさん
垢版 |
2018/06/05(火) 18:52:11.51ID:Tj0WxuQ3
そんなあなたにLinux
2018/06/05(火) 20:24:12.20ID:KPK8mb6Q
>>637
windowsですがなにか?
2018/06/05(火) 23:38:22.68ID:LESN8ogj
データバインディングでレイアウトファイル内に不等号を使った式を書いたんですけど
android:visibilityの値には'<'文字を含めることは出来ません
って出ます
結果によって表示の切り替えをしたいんですがどうするのが一般的なのでしょうか
2018/06/06(水) 07:48:26.85ID:q/NgYwl7
ビジビリティーは表示するしないのプロパティだから当たり前では…。
2018/06/06(水) 08:30:01.78ID:mfLDaQtH
すいません言い方が悪かったです
正確には三項演算子を使って
条件によって表示非表示を切り替えようとしていました
なので比較演算子を使ったのは第1項の条件文の中です
2018/06/06(水) 08:32:00.72ID:mfLDaQtH
また当然その三項演算子は@{}の中に記述してあります
2018/06/06(水) 08:41:23.40ID:OU2EIiJw
&
2018/06/06(水) 08:51:52.72ID:unmQcZLl
エスケープすればいいだけでしように
エスケープ文字は>>645の文字だっけか。
そこは自分で調べて
2018/06/06(水) 12:18:32.98ID:mfLDaQtH
それだけで良かったんですか
帰宅したら試してみます
ありがとうございました
2018/06/06(水) 13:42:38.12ID:06dxUIam
&gt;
2018/06/06(水) 14:07:23.98ID:tGWNBLq2
>>637
Macはメモリーバカ食いVM起動遅いMac用SDKリポジトリ更新遅い5年でOSサポ切り買い替え
2018/06/06(水) 21:17:37.84ID:wQY64V/Y
>>648
出来ました!
ありがとうございました!
2018/06/07(木) 16:56:50.49ID:WM9rs8yL
GDPRの対処についてなんだけど
元々2本にしか配信設定してないのに5月25日前後にイギリスでダウンロードされた
調査のためかわからないけど
配信設定しても、eu在住日本人が
日本語ページでアプリ検索されるのは防げないし、広告設定だけじゃだめなんかな
2018/06/07(木) 17:31:45.86ID:2mKmeoG5
基本的に不特定多数に公開してる時点で全てのアプリはGDPRの対象となるだろうな
653デフォルトの名無しさん
垢版 |
2018/06/08(金) 16:30:06.36ID:xsX40G/R
プログラミングではないのですが教えて下さい。

Androidのアプリで、
マップルという地図ソフトがあります。
起動後、地図データへのパスを求められます。
大容量の地図データなのでSDカードへ入れます。
と、そのパスの形式が
/storage/47D2-1300
みたいな感じで、
SDカード固有の数字で、「数字4桁-数字4桁」のディレクトリを調べないといけないのです。
「数字4桁-数字4桁」を調べるにはどうすればいいのでしょうか?
654653
垢版 |
2018/06/08(金) 16:35:06.10ID:xsX40G/R
あと、
47D2-1300
この文字列は、
そのSDカード固有の文字列で、
どのAndroid機に刺しても、
同じディレクトリになるのでしょうか?
2018/06/08(金) 17:23:49.51ID:U05WowhC
>>653-654
ここはプログラミング質問スレです
2018/06/08(金) 17:53:34.76ID:dTeFfRCY
正規表現では、

^\w{4}-\w{4}$
657653
垢版 |
2018/06/08(金) 18:16:01.01ID:xsX40G/R
>>656
それだと、
\w→単語構成文字:[a-zA-Z_0-9]
小文字まで含んでしまうのでダメです。
SDカード固有の文字列は、大文字アルファベットと数字のみです。
2018/06/08(金) 18:21:06.86ID:YLelc45R
じゃあそういう正規表現を書けばいいだろ……
659デフォルトの名無しさん
垢版 |
2018/06/08(金) 21:30:34.76ID:uQFFSCdV
>>653
/storage ディレクトリ以下は他にも何かあるの?
660653
垢版 |
2018/06/08(金) 22:18:55.98ID:xsX40G/R
>>659
ASUS ZenFone2Laserに、SDカードを刺します。
と、そのSDカードのディレクトリは、
/storage/47D2-1300
/storage/47DB-13AA
/storage/0000-0000
みたいに刺すSDカードによっておのおの変化するんです。
661653
垢版 |
2018/06/08(金) 22:21:57.76ID:xsX40G/R
で、そのディレクトリ情報をゲットするには、↓みたいな特殊な方法しかないのです。
だから、もっと一般的な方法はないかな?という相談です。

http://applion.jp/android/app/jp.co.mapple.supermapple/review/17013000499/
端末はASUS ZenFone2Laser Android6.01,Windows10からの地図データーの転送は端末のSDカードの認識が不安定なので,SDカードを端末から抜きパソコンのカードリーダーを使って転送するとよし。
スーパーマップルの設定でSDカードのpathが問題です。
解決策はカメラアプリを使います。カメラを起動し保存先をSDカードにした後,撮った写真をビューワー(右下の四角いアイコン)で表示させ画面をタップしリジェクト釦(左下の^と=が合体したアイコン)をタップするとSDカードの保存先が表示されます。
/storage/XXXX-XXXX/DCIM/Camera/が表示されますので/DCIM/Camera/を除いた/storage/XXXX-XXXXの部分を一字一句間違いなくメモします。
XXXX-XXXXの部分は一台一台(多分端末のMACアドレス)異なります。大文字・小文字・全角・半角(全て半角)も間違えるとダメです。
このメモをスーパーマップル→三本線→設定→地図・検索データーのパスに入力すると・・・きっと幸せになれます。多くの方が地図が出なくてお悩みの様なので・・・
662656
垢版 |
2018/06/08(金) 22:30:09.38ID:dTeFfRCY
>>656-657
正規表現で、

^[A-Z0-9]{4}-[A-Z0-9]{4}$
663653
垢版 |
2018/06/08(金) 22:35:37.58ID:xsX40G/R
>>662
どうもです。
2018/06/08(金) 22:54:03.68ID:dTeFfRCY
【 mountpoint 】コマンド――指定した場所がマウントポイントかどうかを調べる
http://www.atmarkit.co.jp/ait/articles/1802/23/news024.html

【 findmnt 】コマンド――マウントポイントをツリー状に表示する
http://www.atmarkit.co.jp/ait/articles/1802/22/news030.html

Linux で言えば、mount だろ。
装置がつながった事
2018/06/08(金) 23:17:05.32ID:e6PRlMQF
>>660
最近この手の数字のSDフォルダあるよね、通常の方法では取得できない
どうやれば取得できるのか知りたいね
666664
垢版 |
2018/06/09(土) 00:03:17.73ID:dWoOad5I
UUID みたいなものだろ

装置がつながったタイミングで、
MAC アドレスとタイムスタンプから、唯一の名前を付ける仕組み

装置がつながっているかどうかは、mountpoint を見たらわかる
667653
垢版 |
2018/06/09(土) 00:46:13.91ID:BKhLx4+x
>>666
2つともアマゾンで、
信頼性の高そうな千円の32Gは、/storage/47DB-13AA みたいになって、
信頼性の低そうな2千円の128Gは、/storage0000-0000なんですよね。
だから、そのSDカード固有の文字列なのかな?って気がしたんですけど。
2018/06/09(土) 00:50:08.50ID:Q22eCvBh
>>667
その数字8桁のSDフォルダ以外に紛らわしいような数字8桁のフォルダありますか?
669653
垢版 |
2018/06/09(土) 01:10:35.95ID:BKhLx4+x
>>668
>>661のやり方で見れるだけなので、
/storageフォルダの中に8桁フォルダ以外のフォルダがあるか?ないか?はわかりません。
2018/06/09(土) 01:24:59.70ID:fmcvwIYX
>>661,699
ファイラは何を使ってるの?
ESやMiXなら普通に確認できるけど。。。
671653
垢版 |
2018/06/09(土) 02:11:42.06ID:BKhLx4+x
>>670
ESで確認出来ました。 ありがとうございます。
2018/06/09(土) 12:39:19.71ID:zOy9TlSh
運営にひどい暑がりがいてしんどい
2018/06/11(月) 11:24:30.52ID:dz+JVGD3
サーフェイスビューで文字を表示するとき、フォントを明朝体にしたいのですが、どうすればいいですか?
いくら調べても出てきません。
2018/06/11(月) 11:38:14.40ID:JgNCChlr
端末にフォントがないとダメんじゃなかったか?
2018/06/11(月) 12:05:34.20ID:dz+JVGD3
仮にアセットにフォントをインストールしたとしても、サーフェイスビューでそのフォントに設定する方法が見つかりません。
テキストビューなら可能なようですが、サーフェイスビューで表示したいのです。
2018/06/11(月) 12:24:10.20ID:VZyc8FQB
やったこと無いけど
openGLとかで表示させるのかな
そういうサンプルとかありそうだけど
2018/06/11(月) 12:50:42.55ID:nuDcZ0Ua
アセットからTypefaceオブジェクトを作って
Paintのtypefaceにセットする
2018/06/11(月) 13:43:51.50ID:dz+JVGD3
なるほどここにありましたね↓
https://tech.recruit-mp.co.jp/mobile/remember_canvas1/

でも単に明朝体が使いたいだけなんですけどね。
テキストビューなら明朝体を指定するだけで使えるみたいだけど、最近の端末には明朝体がないみたいだし、エミュでは表示されるけど端末ではゴシックなのかな。
複雑すぎますね。
2018/06/11(月) 23:07:11.41ID:MG33ZzuR
line通話しているときに、丸いアイコンが右上に出るやつ、他のアプリ起動してても常に全面に出る
あの作り方を調べたいんだけど、名前がわからない
知っている方教えてください
2018/06/11(月) 23:27:53.75ID:oX9XT8xk
>>679
line使ってないから分からんけど、オーバーレイかな?

http://adash-android.jp.net/service%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AC%E3%82%A4%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/
2018/06/11(月) 23:32:03.89ID:uhCfZ60W
知らんけどこれでできるんじゃね
画面上にアプリの情報を常時表示する
ttps://techbooster.org/android/ui/13182/
2018/06/11(月) 23:41:46.22ID:uhCfZ60W
昔こういう本も出てたな。何かヒントが得られるかも

Android対応 マスコットアプリ プログラミング
ttps://www.amazon.co.jp/dp/4797368837

1円だったから買ってみたわ
2018/06/12(火) 01:05:56.96ID:XUAiCxGW
多分、オーバーレイで出来そうです
ありがとう
2018/06/12(火) 12:29:24.69ID:B+SrzKTm
サイト内でのGoogleマップ、6月12日から表示されない可能性
https://k-tai.watch.impress.co.jp/docs/news/1126926.html

Google Maps Platformの料金
https://www.zenrin-datacom.net/business/gmapsapi/price/

API                  月額無償枠(200$まで) 0〜100,000/月 100,001+/月
Mobile Native Dynamic Maps  無制限のロード      \0         \0

MapViewを使ったネイティブのマップはいくら表示しても無料になる
という認識でいいんだよね?
2018/06/12(火) 21:24:35.82ID:OGcmo0qi
プロジェクトを新規作成すると、cannot resolve symbol AppCompatActivityとエラーが出ました
importが上手くいっていないという事はわかるのですが、なぜそうなったのかはわかりません
色々と調べた結果、どうも build.gradle の dependencies の各アイテムが、正常に動いているプロジェクトの
各アイテムより微妙にバージョンが低いもので作成されているようでした。
dependencies を正常なプロジェクトからコピペして上書きすれば動くようになるのですが
他に同じような症状に遭遇している方いますか?
2018/06/12(火) 21:35:51.87ID:RfI/RA3w
compilesdkとサポートライブラリのバージョンを揃えるのが大事
2018/06/15(金) 21:02:58.08ID:cv13PWaZ
GDPRってアプリインストール時に同意フォーム表示すればいいだけじゃないの?
何でアプリが個別に対応しなきゃならんの?
2018/06/15(金) 21:12:50.93ID:q5knCegX
アプリのインストール時に表示される許諾のダイアログはアプリが要求する権限(とインストール)のものでGDPRのじゃないから
それもAndroid 6.0からは単なるインストールの許可ダイアログになってる(権限の許諾はアプリ実行時に都度行う)
2018/06/16(土) 11:15:29.90ID:2NlVya6v
>>688
だからグーグルが対応しろよって話じゃないの?
2018/06/16(土) 12:08:07.22ID:TJIUHWP+
GDPR対応っていうのはユーザーに同意ボタン押させれば終わりっていうわけではなく、
これまで以上に個人情報の取り扱いを厳密にする実務面の負担が追加されるわけで
それは当然アプリ提供者側の仕事なので実際のところストア内アプリに関してGoogleができることなどほとんどない
2018/06/16(土) 13:24:44.37ID:7Nkh6D+N
そーゆーこと
2018/06/16(土) 15:54:31.45ID:jQYtndrZ
>>690
なるほど
2018/06/16(土) 21:53:45.53ID:XgkI9oYL
アプリで個人情報を扱ってなければ何の対応も必要ないから
ググルが対応しろというのはちょっと違うよな
2018/06/16(土) 22:26:23.63ID:Lncy7K/y
GDPR程の糞はない
2018/06/16(土) 22:40:37.07ID:9NNZo3US
GDPRは広告を表示していると対応しなきゃいけないんだけど
UnityAdsはUnity側が対応しているのにAdmobはgoogle側が対応していない
そこを文句言ってるんじゃなくて?
2018/06/16(土) 22:40:38.30ID:7Nkh6D+N
ツイッターで見かけた記事には、プライバシー情報を企業から個人に返すことによって、ビジネスのチャンスが生まれてくるなんて書いてあったけど、リテラシーがまったく不足してる日本じゃ、それを活かすことはできないよなぁ。
2018/06/17(日) 17:44:00.12ID:kHvgk32W
Android対応 マスコットアプリ プログラミング
が届いたから一通り目を通してみたが全く今回の件と関係なかったわ
2018/06/17(日) 23:07:53.12ID:8S1deCpp
accessbilityserviceのkeyeventからハードキーの操作を検知しているのですが、画面オフだと検知されません。
画面オフでも検知する方法はあるでしょうか?
参考になるサイトなどあれば教えてもらえると助かります。よろしくお願いします。
2018/06/18(月) 15:51:06.25ID:GOHTB3SK
画面オフでonStopに入るから検知は無理だと思う
BroadcastReceiverでハードキーは検知できる
2018/06/19(火) 09:44:44.03ID:DKE+HUB7
runnable intentserviceって何が違うのでしょうか?
どちらも非同期で、送った順番に処理していくだけに見えるのですが、実際はどうなのでしょう?
https://qiita.com/KeithYokoma/items/4e6e9bd4e44aab63424d
2018/06/19(火) 09:56:05.96ID:79Fiix4+
IntentServiceはAndroid特有でServiceのライフサイクルで動くよ
2018/06/19(火) 11:06:06.70ID:DKE+HUB7
>>701
ありがとうございます。
ざっくりで言うと、こんな感じでしょうか?

Runable:Java本来の非同期処理
IntentService:Android用に最適化して作られた非同期処理
2018/06/19(火) 12:02:52.58ID:dbWqq3sV
非同期処理とサービスは違うような…
2018/06/19(火) 12:39:35.93ID:r06HGeNr
うん、違うな
Runnableについても、それがRunnableだからといって勝手に非同期処理になる訳じゃない
2018/06/19(火) 12:46:36.37ID:kKUdVF/B
非同期処理ならexecuterService使ったら?
名前がややこしいけどこれAndroidじゃなくてjavaね
2018/06/19(火) 12:48:02.02ID:kKUdVF/B
やりたいことが何か知らんが>>700の記事にだいたい書いてあるじゃん
ちょっと古いが
2018/06/19(火) 15:30:16.61ID:DKE+HUB7
やりたいことはデータを受け取ったら順次加工してファイル保存です。
カメラで例えると、撮影して、画像を処理して、動画ファイル保存みたいな感じです。
この場合の画像処理以降を非同期でやりたいなと。
2018/06/19(火) 16:06:50.06ID:DKE+HUB7
現状は撮影していると稀に画像が飛んで保存されるので、非同期にすれば改善されるのかなと。
2018/06/19(火) 16:13:55.55ID:jB3FcKjo
FusedLocationProviderApiがdeprecatedになってFusedLocationProviderClientを使うように推奨されてるけど
開発者サービスが古いとFusedLocationProviderClientを使うとクラッシュするらしいいが
古いままの端末のためにこの分岐をtry/catchでやるのはあんまりよろしい書き方じゃない?
2018/06/19(火) 20:57:39.44ID:atnFQNgZ
非同期処理は全部RxJavaでやったらいい
2018/06/20(水) 10:31:38.16ID:MfDjZ68z
RxJavaって使ってる人いるの?ってくらい情報が少ないな
2018/06/20(水) 12:03:08.34ID:Ts+Rw46r
確かにメリットはあるけど言うほど必須ではない
2018/06/20(水) 12:16:53.84ID:VGUBMEBl
Androidの非同期処理はAsyncTaskかServiceでやる
スレッドを分けるだけだとライフサイクル上破棄されて事後処理が行えないことがある
2018/06/20(水) 13:06:07.96ID:7RFFPjeU
これからはWorkManager
2018/06/20(水) 16:55:29.77ID:MfDjZ68z
WorkManagerってAPI14以上で使えるってことは、
色んな機能をラップしてまとめた物なの?
2018/06/23(土) 01:16:14.70ID:KW404gFi
FirebaseのJobDispatcherとは何か違うのかと思って調べたら、大体同じ感じなのね
にしても、バージョンが断片化してるのに機能がどんどん変わっていって、ほとんどの機能がラッパーありきになってるのどうにかならんかね
2018/06/23(土) 07:31:00.44ID:j6x5zCmd
レビューで広告があるのが残念とか言う奴何なの?
なんでボランティアで作らないといけないんだよアホか
2018/06/23(土) 07:51:13.46ID:egL20+vf
気持ちは分かるが、気にしすぎ
2018/06/23(土) 07:52:29.12ID:WO6Wf4SP
そこが今の日本人のヤバイところだよ
なんでか無料が当たり前みたいに考えてる価値あると認めても金を払わない
2018/06/24(日) 00:12:56.21ID:NkRPOsE2
広告無し有料版きぼんってことだろ作ればいいじゃない
2018/06/26(火) 00:46:08.74ID:9zxcVTrI
全く金にならないけどスマホアプリ作るっているのが一番楽しい
2018/06/27(水) 15:00:38.30ID:kZGjx8UI
Androidで関数のsynchronizedって使えますか?
使ってみると順次処理になることは少なく、
デッドロックばかりでスレッドが飛ぶのですが、
自分の書き方が悪いのでしょうか?
2018/06/27(水) 15:31:08.45ID:b0s9+6fe
デッドロックするならたぶん>>722か悪い
javaのsynchronizedとして使ってないのでは?
2018/06/27(水) 16:30:48.91ID:kZGjx8UI
>>723
ありがとうございます。
new Thread(new Runnable() を多用しているので、
private synchronized void kansu()で強引に使ってみただけなんです。
書き方と言うか、使い方やネストを見直してみます。
2018/06/27(水) 16:54:28.14ID:VcfhxjvV
privateメソッドでメソッドスコープの同期って粒度でかくね
2018/06/27(水) 19:04:39.51ID:b0s9+6fe
>>724
それならexecutorServiceにRunnableの実行を任せたほうがスレッド数とかcallableで返り値取得とかできていいぞ
2018/06/27(水) 20:32:56.17ID:6YqD/Q1A
executorServiceって最近は本でも見ないけども、
意外と有効なのね。
2018/06/28(木) 10:57:58.38ID:tMTnxUV1
こんな感じで共通の関数を使い、
値を加工しながら渡して行く場合、
どんな非同期処理が有効なんでしょうか?

https://ideone.com/CaSrJ3
2018/06/28(木) 12:04:37.63ID:tMTnxUV1
>>726
// new Thread(new Runnable() {
final ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(new Runnable() {

Thread()をExecuteService()にしてみましたが、
デッドロックの発生頻度が上がってしまいました・・・。
2018/06/28(木) 12:09:03.47ID:M7t0D3p6
>>729
ExecutorServiceをRunnableとThreadで包んであるのは何か理由ある?
newSingleThreadというメソッド名が示す通り、勝手にワーカーThreadは用意してくれるので包む必要がない
2018/06/28(木) 12:11:45.20ID:M7t0D3p6
ああすまん、コメントアウトしてたのか
ロックの扱い方が悪いんだろうけど
これについてはソースコードがないとなかなかわからない
2018/06/28(木) 12:24:57.21ID:tMTnxUV1
>>730
ありがとうございます、ざっくりしたソースは>>728です。
必要なスレッド数を確保する為(ソースで言うと偶数と奇数なので2つ)に、
ScheduledExecutorServiceを使用してみましたが、
あまり変わりませんでした。

final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2);
executorService.submit(new Runnable() {
2018/06/28(木) 13:24:50.72ID:fREB9Kzm
rxjavaでzipで待てばいいだけじゃねえの
2018/06/28(木) 14:46:53.25ID:fB7+LtVt
脳にダメージが来るコードだなおい
2018/06/28(木) 15:45:10.73ID:M7t0D3p6
デッドロックが起きたことを示す資料はあるか?
糞パフォーマンス実装は無視するとして
問題はハンドラーの無限ループであるように見える
2018/06/28(木) 15:45:20.40ID:tMTnxUV1
>>733
https://qiita.com/disc99/items/1b2e44a1105008ec3ac9#zip
https://qiita.com/toastkidjp/items/581e89559f05952fbdb6

こんな感じなのでしょうか?
最初から作るのならRxJavaで作るべきだったのかもしれませんが、
後からRxJavaに変更すると、ほとんど作り直しになりそうなので、悩んでます。
発生頻度は24時間連続で動かして1〜2回程度なので、ちょっとした改善で直らないかなと。

>>734
なんとなくおかしいのはわかるのですが、
どのように書いたらダメージが来なくなるのでしょうか?
2018/06/28(木) 15:48:45.03ID:tMTnxUV1
>>735
ファイルに保存する時にSystem.nanoTime()で保存時間を見ているのですが、
20,40,60,80となるところが、
20,40,80といった具合に、稀に時間が飛んでいます。
■ このスレッドは過去ログ倉庫に格納されています