Androidプログラミング質問スレ revision53 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>1
死ね
誘導
Androidプログラミング質問スレ revision53 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1487994370/ プログラムの質問じゃないかもしれないけど
端末の個体情報を全部書き換える方法ってない?
どこのファイルでこれって管理されてるの?
昔バイナリエディタで書き換えた記憶があるんだけど、どのファイルのアドレス何だったか忘れてしまった フィールドでボタンをnewすると
アプリを起動後問題が発生して落ちるんですが
この問題について解説してるサイトあったら教えてください
別のクラスでボタンのオブジェクト作成、設定を定義してあるのを
メインのクラスでそのクラスのボタンのオブジェクト、設定を定義してあるメソッドを呼び出して定義させたものをメインのクラスを使うことってできますか?
やってみたんですけどアプリを起動すると問題が発生して落ちます retrofit2とRxJavaでAPI通信しています。
最初にAPIを叩いて、可変個のIDのリストを取得します。
続けて可変個のIDを引数とした別のAPIを並列に叩いて、
全て呼び出し完了したら次の処理へ進む、としたいんですが、RxJavaでどう書いたらいいでしょうか
apiA()
.flatMap { ids ->
Observable.zip()
}
.subscriveOn...
.observeOn...
.subscribe()
みたいな感じだと思うんですけど、zipの可変長版みたいなのはないでしょうか。 apiA()
.flatMap { ids ->
val list = mutableListOf<Single<Unit>>()
for (id in ids) {
list.add(apiB()
.flatMap {
// apiB()の結果を受け取った際の処理
Single.just(Unit)
}
}
Single.zip(list, { })
}
.subscribeOn...
.observeOn...
.subscribe( { _ ->
// apiB()の処理が全部終わった後にする処理
}, { e: Throwable ->
// エラー処理
}) × list.add(apiB()
〇 list.add(apiB(id) 有料アプリをリリースしようと思うんだけどライセンス認証って今どうなの?
ググっても古い情報ばかりだし 6年前にリリースした有料のライセンス認証
まだ普通にうごいているから大丈夫なんじゃね? ほなら一応実装しとくか
AntiLVLってのがあるみたいだし効果あるのかわからんが
デバイスIDが同じデバイスがあるってのも気になる GooglePlay API28レベル制限
新規が8月、アップデートが11月 以降
>>11
泥板に立てると、沈められる GooglePlayで非公開の状態で内部テストしたいんだけどできない?
もしくは代わりの手段ある? 一度でもデバッグしたことのある人からは出なさそうな質問 クローズドかー
製品版トラックと内部テスト版トラックしか使ったことなかったわー メルカリのアプリがナビゲーションビュー使わなくなったけどナビゲーションビューって何か問題あるの? 英語版でアプリ公開したらaoneappsってとこからメールきたんだけどこれって有料で最適化するみたいなサービスだよね
メール無視していいよね? admobのリワード広告のAPIって新しいの使った方がいいの?
ベータ版って書いてあるけど GPSで座標をテキストビューに表示するだけのテストプログラムを組んでいます。
android7だと動きますが、android5だと動かないのはなぜでしょうか? android5のほうはgooglemapでGPS取得できています。
package com.example.gps;
import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity implements LocationListener{
private static final String LOG_TAG = "UseLocation";
LocationManager mLocationManager = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLocationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);
}
@Override
public void onLocationChanged(Location loc){
((TextView)findViewById(R.id.lat)).setText("LAT:" + loc.getLatitude());
((TextView)findViewById(R.id.lon)).setText("LONG:" + loc.getLongitude());
}
@Override
public void onProviderEnabled(String provider){ }
@Override
public void onProviderDisabled(String provider){ }
@Override
public void onStatusChanged(String provider,int status,Bundle extras){ }
} 私の苦労しています
オンラインゲームを作りたいのですが
サーバーにつなぐと動きが数秒停止してしまいます
PUPGのようにしたいので動きが停止するのは非常に苦労です
どのように私の苦労を解決したらよいでしょうか? 多分そうだろうが、何か問題でも?
日本人だって変な英語であちこちに質問してたりするのでは? My hardship I would like to make an online game If you follow the server, the movement will stop for a few seconds It is very hard to stop the movement because I want to like PUPG How would you like to resolve my hardship? 業務委託の奴なんなん
こっちは週5で休みなく働いてるのに週3勤務とか週4勤務とかしやがって
フルリモートの奴とか夜中に仕事しやがってコミュニケーション取るのに糞時間がかかるんだが
マジ死ねばいいのに Android Studio 3.4.2
gradle 3.4.2
java
で開発しています。
別ファイル(別クラス)で定義している定数 HogeClass.mFlag = true;
を使って if(HogeClass.mFlag) { // hogehoge } と書いてビルドした場合、
if(HogeClass.mFlag) の条件分岐は削除されるという素敵仕様ですか?
もしくは、毎回処理されますか? AS3.4.2は使ってないけど普通に削除されないっていうか、それで削除されちゃうと
クラスにプロパティとか作っても処理できないとかおかしな話になるんじゃないかな 5Gにむけてまた新しくスマホかいかえんといかんかな
まだ出てないけど 5Gスマホは主流になると今の大量に出回ってるスマホは過去の廃産物になるんかな 今でも3G使えてるくらいだから地デジみたいに政府が5G以外は
まかりならんとかはじめなきゃまだまだ10年以上使えるんでない >>41
徐々にそうなるのではないかな。でも10年も掛からないような気がする。 一番やっすいプランで電話で無闇に動画見たりしないから高速回線言われても 容量がすぐに無くなりそうだしな
ガッツリ必要な時はWiFiでいいし 有料かったユーザーからメールでやっぱ返金してほしいって言われたんだけど
買ったアプリを特定するための情報って何?
購入者は注文IDとか知ってるのかね? >>46
お金の流れはユーザーと直接やってるわけじゃないから、ぐーぐるさんに話をしてもらうのが筋なんじゃないかな?
客と直接お金のやりとりしたらダメだと思うよ
ん?ストアの運営ってぐーぐるだっけ? まあ、確かに注文IDが漏れて、嫌がらせキャンセルなんてのができるかもしれんからね
個人でストアからキャンセルしてもらうしかないのかな
「子供が勝手に勝ったみたいでー」とかう英文が届いた 直売しているわけではないから無視してもいいよ(法的にはね)
ストアに連絡したら?連絡方法は知らないけどdeveloperの画面にないかな?
英語ならこんな感じで送って丸投げでいいと思う
i get this mail
i don't have authority (英語に自信はないが、私に権限はないみたいに書いとけばいいのでは?)
以下メール貼り付け >>49
(法的には)とか書いたけど責任もてないからキャンセルで
ストアに連絡してね 48時間まではgoogleが対応でそれ以降はデベロッパー側に判断が委ねられるらしいな
2日過ぎたら返金は絶望的みたいな事も書いてあったが購入者が子供って場合は日本な
ら法的に保護されそうな気がしなくもないでもまあ親の管理責任だよな >>52
返金するかの判断がこちらになるだけで、返金の作業はぐーぐるだよね
ユーザーと口座のやりとりとかしたくないし 確かデベコンからキャンセルできたよね?
ただ、どの購入(注文ID)なのかが分からないから、それを知るすべがほしい 非同期処理をしているのですが
Threadか、 Handlarのどちらを使うべきでしょうか? 画面がスリープ状態になっているかどうかの判別をするには
どういう関数を使えばいいんでしょうか? targetSdkVersionを28にしろとなってますが
メインはそうしてるんですが
LVLの方が
minSdkVersion 14
targetSdkVersion 28
これでcompileの方を
compileSdkVersion 28 にすると
ServerManagedPolicy.javaの
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
ApkExpansionPolicy.javaの
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
これらが赤線で存在しませんエラーになってしまいます。
compileSdkVersion 29にすると
Gradle Configure project:lvl
これで延々と処理中になります。
compileSdkVersion 22 これで
ようやく実行はできるのですが、22に赤線が入り
The compileSdkVersion (22) should not be lower than the targetSdkVersion (28) less...
となってしまいます。
これらの症状をなおすにはどうすればいいのでしょうか?
LVLは
minSdkVersion
targetSdkVersion
compileSdkVersion
これらをどういう数値に設定すればうまくいくのでしょうか。 >>60
以下を追加
useLibrary 'org.apache.http.legacy' LVLはG提供のをビルドしても非推奨がいくつも出るけどそのまま使っていいのかな?
ずっと前から6.0で使うとバグがあるからLicenseChecker.javaを書き換えてという個人のWeb情報出てるけど
それも全然改正しないでGがほったらかしにしているのはなんでだろう?
まあ後者のはいいとしてみんなは非推奨が出るのをそのまま使ってるの? API29からEnvironment.getExternalStorageDirectory().getPath();が非推奨になったけども、
これは内部ストレージ直下にファイルやフォルダを作れなくなったってことでしょうか?
その場合、なるべく直下から浅いフォルダにテキストファイルを保存したいけども、
どれを代替えとして使うのが良いのでしょう?
試しにContext#getExternalFilesDir(String)を使ってみましたが、
かなり深いところになってしまいますよね? drowBitmap ってバグというか時々書き漏れあるよね?
対策法とかないのかな >>64と似たことで詰まっています
SAFなら浅いところに保存出来ますが、ファイル名確認のダイアログを必ず表示することになります
ダイアログを表示せず、ログの様に追記可能なテキストファイルを保存することは出来ないでしょうか? JNIにCのソースをincludeさせる場合、どうしたら良いのかな?
大浦版FFTを入れようと、
#include "fft4g.c"
って書いても呼び出してくれなかった。
CMakeLists.txtに追加する方法とかありましたら、お願いします。 https://gist.github.com/YSRKEN/0bce2126dec5ea3b92e2
このcppとhppをJNIにインクルードし、rdft()を呼び出すと
ASに「rdft()にstaticを付けろ」と言われます。
staticを付けると「rdft()からstaticを外せ」と出てしまいます。
どうしたら良いのでしょうか? cppはインクルードするものじゃないよ
ソースとしてコンパイルしてリンクするもの
cppでhppを読み込んでいるのにhppもインクルードして定義が重複するから
おかしな状態になっているのではないのかな CMakeLists.txtのadd_libraryにcppとhppを追加して、
#include "fft4g.cpp"
で使ってみましたが、ダメなのでしょうか?
JNIがあるcppに全部コピペするのが手っ取り早いかもしれませんが CMakeList.txtのadd_libraryにcpp追加してるのに自分でcppインクルードしたら
同じ内容がfft4.cppと自分のソースに存在することになるでしょ
CMakeList.txtの内容が間違っていないならば、add_libraryにfft4.cpp追加して
自分のソースでfft4.cppで定義したメソッドを呼び出せばよいだけ V2スキームで署名しても改変できちまうんだが
どういうことなんかな〜 なぁ…メディアスキャン…みたいな…アプリでさぁ…SDCARDを内部ストレージにすると…
ContentResolverで…deleteすると…画像ファイルは…消されてしまう…この仕様が痛くてさ…
普通にSSDの内部ストレージが外れるなんて事は…まず…ないだろうから…それでいいんだけど…
普通にSDCARDでもOK…普通にSDカードだと…ContentResolverからdeleteしても…画像実ファイルは消されない…
SDCARDを内部ストレージにした場合に…画像ファイルは…消されてしまう…
スキャン中にさ…抜き差し…したら…画像が消えてしまう…タイミングがどうしても…生まれるじゃん?
スキャン中に抜いただけならOKだけど…その後…すぐに…挿されると…物理的には…消えるタイミングが生まれる…
つまり…ContentResolverのdelete中に…挿す…だ…しかもディレクトリなら…like使って…豪快に消込に行く…
ここのlikeを廃止すれば…1個1個消すにすれば…1ファイルだけ消えた…と被害は抑えられるかもしれない…
Receiverでアンマウント拾っても…タイミング的に…間に合わない事は…絶対に…起きる…
メインストレージになってるSDCARDを抜いて…EnvironmentのgetExternalStorageStateが…removedになる前に…
ContentResolverのdeleteが走り…その後…すぐに…SDが挿されると…画像ファイルは…物理的には…豪快に…消される事になる…
そもそも…画像ファイル消したくないんだったら…WRITE_STORAGE権限与えるなとも…考えたが…
READ与えただけで…WRITEもできるし…どうしようもないじゃん…誰か…助けて…
危ないタイミングがある…という事で…このアプリは…公開停止するかもしれない… 極論…SDCARDが外れる前に…アンマウントに設定する事は…できないんだよ…
設定画面からボタン押下だと…ロジック的には…可だが…いきなりパチンと抜くときは…無理…
どうしても…時差が…出てくる…そこに悩んでる… 実機で表示サイズやフォントサイズを変更して確認を行っています。
設定-ディスプレイ-「フォントサイズ」「」表示サイズ」
設定画面ではなくadbで変更する方法は無いでしょうか wrap_contentのTextViewにsetText()でテキストを設定していますが、TextViewの幅が更新されないため、一部しか表示されません
画面全体を再描画するにはどうしたらいいでしょうか? 画面を最小化してから戻すとちゃんと表示されるようになります
invalidate()しても更新されませんでした 質問です。
初心者が大量の複数桁7セグledを制御したいとなった時、その桁数シフトレジスタ用意して制御するのが一番楽ですかね? 本当に大事な時に書き込みが出来なくなる、最近の5chはどうかと思う
ここの板の存在価値の問題じゃない? そりゃいつでも書き込めるTwitterとかが使い勝手言いわけだ
板の話と違ってごめん startActivity(intent);は通常のwebサイトは表示できますが
Playストアのplay.google.comやmarketのページは表示できないんですか? 実行ではまともに動作せず、デバッグ実行の時はちゃんと動く時はどうすればいいかな
原因がわからない
速度が落ちると動くのでタイミングの問題か logcatで分からなければ、古き良きprintデバッグだね releaseで動かないのは結構あるけどねぇ
怪しそうなところでLogに出すくらいしか思い浮かばない >>91
Proguardの設定じゃない?よくあるのは そういうときはgitで遡っていってどのコミットから発生するようになったか切り分けていく 現在Kotlinで簡単なメモアプリを作成しています
menuレイアウトを作成し、その内のdeleteボタンを押下するとダイアログ表示後 "DONE" を選択すると文字をリセットするというプログラムを書いています
現状のコードではダイアログが表示されるだけで、文字のリセットが行われません
どこが間違っているのかご指摘お願いします!
https://dotup.org/uploda/dotup.org2560570.png ヒント
showで処理は止まってない
すぐflagをreturnしてる builder.show()を読み込んだ後処理を待機させればいいのか・・・・? createDialog()の引数に関数を渡せるようにしてsetPositiveButon()でその関数を呼ぶ。
flagはいらない。
createDialog()を呼ぶときに文字を消す関数をわたす。 ありがとうございます
なんとか目的の処理は実装できました
ただd91Ax+2Mさんのアドバイスはおそらく高階関数を使えということですよね? >>102
そうです。setPositiveButon()に直接文字消す処理書いてもいいかなとも思いましたが。
自分も勉強中なのでどうやって解決したか教えてくれると嬉しです。 >>103
自分は高階関数は使わず、関数呼び出しただけの処理にしました
ググってみましたがちょっと理解に時間がかかりそうなのでとりあえずこういう形に。。
https://dotup.org/uploda/dotup.org2561589.png >>104
今回はこれでいいですよね。ありがとう。 本当にそれで良いのかよ!
あきらめんな!本当の自分さらけ出せよ!!
中途半端に終わらせて後悔すんなよ! コルーチンで遅延処理できるかなとも思ったけど、今回の場合はコードを呼び出すタイミングが肝だったので違うかなと AABてそのまま野良インスコはできないんでしょ、そういうのは消えるんじゃ navigationを使った画面遷移ってfragmentからしかできないのかな?
MainActivityにBottomNavigationViewとNavHostFragmentと分けて作ってるんだけど、MainActivity.ktファイルで画面遷移処理を実装しようとしてます
可能ですかね?
https://dotup.org/uploda/dotup.org2584409.png ちゃんとNavigationGraph作ってれば問題ないよ ZXingを使ってJANコード読み取りたいんだけど、ちょっと躓いてます
fragment_scan.xmlのscan_view(黒くなってる領域)にコード読み取り画面を埋め込みたいのだけど、現状のコードでは右のようにフルスクリーンになってしまいます
これはscan_viewに何かを紐づけないといけないのでしょうか?
https://dotup.org/uploda/dotup.org2585150.png Realm使えてる人いる?
初めてのAndroidプログラミングって本にrealmを使ったサンプルアプリがあるんだが、エラー吐いて使えねぇ
MongoDBに登録してそこでチョコチョコしないといけないの? jcenterのwarning出るよね
もう開発やる気ないんじゃね
今ならroomで良いんじゃない >>116
roomとSQLite使うしかないか
ありがとう
他にローカルデータベースを構築する方法ってあるのかな あと日本人が作ってるライブラリのやつ何だったっけなあ >>115
普通に問題なく使ってるよ、依存も問題ない
非常に便利なDBだけど今から使うならあえてオススメはしないかな アプリのタイトルバーを非表示にしたくてManifestやThemeファイルをいじってるんだけどエラー発生して起動できないよ
皆タイトルバーを非表示にしたい時ってどこをどう変更してますか? >>122
ActivityのonCreate()で、supportActionBar?.hide()とか。 今の公式ドキュメントではこれはアプリバーで、実装する為のクラスはToolbar
以前はアクションバーと呼ばれていて、APIにはまだそっちの名残りも少し残っている
APIのバージョン上がる度にやり方変わって来たので、適当に検索して試すと、古いハズレの情報にハマる可能性が高い
なので公式ドキュメントを参照すべし
ただし公式もv7 appcompa使えとか古い情報が残ってるので、これはandroidxに読み替える必要あり マニフェストの<application>要素のandroid:themeにデフォルトのNoActionBar系のテーマを指定すれば、インストールしたAndroidのバージョンに応じて、かつてのタイトルバーやアクションバーが表示されないよう勝手に設定してくれる
そのうえでToolbarクラスを配置してアップバーを表示する操作をするのが今の流儀なので、それをやらなければバー無しになるはず
テーマを自分でいじりたい場合には、デフォルトのNoActionBar系のテーマを継承するようにして、下手なことをやらければ同じ効果が得られると思われ
もしかしたらこの情報も古いかもだがそのときは許してね >>126
>>128
アドバイスありがとうございます
結論から言うとManifestをいじってもやっぱりエラーが出て落ちます
今回作成したアプリはactivityにfragmentを乗っけて作っているのでsupportActionBar?.hide()で対処することにしました
新たに新規プロジェクトを作成してManifestをいじってみるとうまくいくのですが
現状作成しているアプリではエラー落ちしますね
すっげぇもやもやする・・・ アップがaabに変わりましたけどこのaabに変えてからのやつは
難読化してあるソースもデベコンのエラーレポートのスタック トレースが難読化する前のソースでの表示に
なったりするんでしょうか? >>129
supportActionBar?.hide 呼んでる時点でこれまでのアドバイス理解してないじゃないかな
AppBarが表示されるのは、
Theme/StyleにNoActionBar以外を設定している
レイアウトでToolbarを置いてsetSupportActionBar(toolbar)してる
のどちらかだけど、どっちかな?
前者ならNoActionBar設定すればOK、後者ならToolbar消せば終わり NoActionBar系のテーマに切り替えると落ちるって書いてあるじゃん
古い環境で作ったstyleなんかのリソースが、NoActionBarテーマに対応出来てない可能性
あとはAppCompatActivity使ってないとか getSupportActionBarはAppCompatActivityのAPI >古い環境で作ったstyleなんかのリソースが、NoActionBarテーマに対応出来てない可能性
Kotlin使ってるようだから少なくとも古のプロジェクトではなさそう >>133
ActionBarActivityだったことがあるはず >>134
build.gradleいじるだけで古いブロジェクトもKotlin化できるでしょ フォルダや書庫の画像を1枚1枚順に表示していくアプリを作りたいのですが
サンプルやサイトなど良い所はないでしょうか? 趣味アプリで音声通話したいんですが何のライブラリがメジャーなんですかね MainActivityで定義した変数val1にFragmentから値をアクセスするのに以下の書き方をしています。
(double)((MainActivity) getContext()).val1 = double変数;
これは画面回転などでいけないコードなんでしょうか? interface定義してそのメソッド経由で書き換えた方が良かろうよ surfaceviewの描画方式って
・lockCanvas/unlockCanvasAndPost メソッド経由でcanvasを操作する方法
・surfaceviewクラスのvoid draw (Canvas canvas)メソッドをoverrideする方法
https://developer.android.com/reference/android/view/SurfaceView?hl=ja#draw(android.graphics.Canvas)
の2通りあるみたいですが、これらにはどの様な違いがあるのでしょうか。 >>139
素直にAAC(Jetpack) ViewModel使いましょう Roomを使ってデータベースに画像を保存することは可能でしょうか?
アプリ内で端末内部ストレージの画像を選択orカメラアプリで撮影し、その画像の保存処理を行いたいです そりゃ可能
普通にByteArrayだかで定義してそこにつっこめばいい realtimedatabaseの項目数をかうんとしたいんですがどうしたらいいですか
refのchildCountを取得しようとすると項目数が多すぎて途中でクラッシュします Android Studioでの話ですが、クラスでインターフェイスを継承したとき、メンバを実装しますよね
例えば、
KotlinでDatePickerDialog.OnDateSetListenerを継承し、onDateSetメンバを実装するとします
その際に、パラメータの名前がp0,p1といった具合に人から見てよくわからない名前になるのですがこれは自分で直すしかないのでしょうか? jetpack composeって主流になるんでしょうか 1. https://developer.android.com/reference/kotlin/android/app/admin/DevicePolicyManager#locknow
> From version Build.VERSION_CODES.R onwards, the caller must either have the LOCK_DEVICE permission or the device must have the device admin feature;
2.https://developer.android.com/reference/kotlin/android/Manifest.permission?hl=ja
1のリンクってandroid R以降は端末管理アプリじゃなくてもLOCK_DEVICE権限さえ持ってれば画面をロックできるよって意味に読めると思うんですが、
その場合2のリンク内を探してもLOCK_DEVICEというのが見つからないんですがどうやって要求するもんなんでしょうか? ざっとググってみた
android.permission.LOCK_DEVICEのprotectionLevelはsignature|privileged
privilegedはシステムイメージ上の特権アプリの権限(メーカー用)
https://developer.android.com/reference/android/R.attr#protectionLevel
LOCK_DEVICE権限は通常のアプリでは指定できない
って感じなんだけど詳しい人教えて onResume()でsuper.onResume()の次からコード書いていますが、superを一番最後に書くのはどういう時ですか? アプリ側で先に処理をしてからシステムにお任せするときとかじゃないかな
ライフサイクルで言うとonPause()辺りから最後にsuper呼ぶ派がいるらしいね kotlinで開発しているアプリで尋ねたいことがあります
EditTextとButton(+、-)で数値カウンターを作りたいのですが、EditTextの中身をint型にして取り出すには、edittext.text.toString().toInt()でよいのでしょうか?
EditTextに何も値が入っていない場合NumberFormatExceptionが出てしまいます。これはnullを変換できないために出ているという理解であっていますか? EditTextに何も入ってないときは空文字列になってるんじゃないかな
それをtoInt()しようとしても変換できなくて例外飛んでそう
toIntOrNull()使えば失敗した場合にnullになるから個人的には扱いやすいけど >>157
""こいつが入ってたんですね。。。ありがとうございます GLESのフラグメントシェーダーで条件を満たす場合のみポスト処理を加えたいのですが、
vec4 postprocess(vec4 c) {
// return c;
// return vec4(1.0, 1.0, 1.0, 1.0);
return (複雑な処理);
}
void main() {
vec4 c = texture2D(tex, coord);
c = (cond == 1) ? postprocess(c) : c;
c = (cond == 1) ? postprocess(c) : c; <-(以下繰り返し)
gl_FragColor = c;
}
cond=0の場合はpostprocess関数は通らない(fpsは落ちない)はずなんですが、
条件式の行を(試しに)増やすとみるみるfpsが落ちます。
三項演算子がボトルネックなのかと思いましたが、コメント行のreturnだとfpsは落ちません。
つまり、一度も使われないはずの複雑な処理部分でfpsが落ちています。
ポスト処理が不要の場合にfpsを落ちなくする方法はないでしょうか。
実際はもっと複雑なのでフラグメントシェーダー自体を分ける、という手は使えません。 一瞬C言語に見えたがGLSLなのね
C言語の3項演算子は規格で?の前の値が偽の場合には:の前の式の評価自体が行われないことになっているけど、GLSLはそうはなっていないというだけじゃないないかな
ベクトル処理的には常に両方評価するようになってたほうが都合が良さそう 単純にcondが0になっていないだけみたいな話は…さすがにないか GPUはコア間の処理タイミングを揃えるために
条件分岐は両方の場合を常に実行し
合わない方を捨てることでつじつまを合わせることが多い C言語でOPENGLESすると100倍くらいスピード上がりますか? >>164
何と比較してなのかさっぱり
エスパーじゃねンダワ フリーランス向けエージェント「クラウドテック」会員数8万人突破
〜働きやすい環境構築のため、単価向上・全年齢の活躍の場創出・
地方企業のDX推進の取り組みを強化します〜
フリーランスエンジニア専門の案件一括検索サイト「フリーランススタート」、
累計掲載案件数25万件突破!リモートワークの累計掲載案件数35,000件突破!
新規人材の80%がフルリモート希望! IT人材市況動向レポート2021年12月版を公開
人口移動報告 家賃高い、首都圏脱出 「コロナ禍、仕事フルリモート」
クラウドテック、地方企業向け『クラウドテックDX』を開始、
7万人を超えるDX人材が、地方の非IT企業のDX推進を支援
新潟県、移住してきたテレワーカー/フリーランスに最大50万円を支給
テレワークの一般化により、11月にはテレワーク可能案件83.7%へと増加。
2021年、フリーランスのトレンドは「移住&テレワーク」と予測 文字入力ソフトを作成したい・・・と思ったら
まずどこから学習したら良いでしょうか
OSの機能からでしょうか
また、言語は何がよろしいでしょうか。
githubにいいソースがあったりするのでしょうか。
何か情報いただけたら嬉しいです。
よろしくお願いいたします。 >>168
ttps://developer.android.com/guide/topics/text/creating-input-method?hl=ja dialogにMPAndroidChartでチャートを表示させようとして、幅と高さを目一杯のmatch_parentにしても高さはぺしゃんこになります。どうしたら高さを設定できるのでしょうか?
高さを400dpとか固定値なら表示できますが、機種によってはみ出るから自動にしたいです。 つ
val width: Int = context.resources.displayMetrics.widthPixels
val height: Int = context.resources.displayMetrics.heightPixels >>177
ありがとうございます。
final View viw = inflater.inflate(R.layout.dialogChart, null);
mChart = viw.findViewById(R.id.LineChart);
AlertDialog.Builder alert = new AlertDialog.Builder(~);
alert.setView(viw);
~
alert.show();
と言う感じでダイアログ出してますが、どうやってR.id.LineChartの高さを指定するのですか? >高さを400dpとか固定値なら表示できますが
指定する方法わかってるじゃん >>179
レイアウトのxmlファイルでの指定はわかるけどjavaコードでの指定がわからないのです。 <com.github.mikephil.charting.charts.LineChart
android:id="@+id/LineChart"
android:layout_width="400dp"
android:layout_height="600dp" /> constraintlayoutで使うと赤線出るけど、どうしたら良いですか? mChartのwidthとheightを画面サイズの0.8倍に設定できましたが、AlertDailogの横幅の0.8倍にしたい。
AlertDailogのwidthとheightを取得したいがネットを探しても出てこない。 Navigation Drawerで質問です。
オプションメニュー(縦…)をタップして、処理が終わったら、ハンバーガーメニューを開いて欲しいのだけど出来ますか? 1.処理が終わったら、DrawerもってるActivity/Fragmentに通知して閉じる。
2. https://stackoverflow.com/a/45881871 MPAndroidChartで質問です。
描画したチャートをピンチで拡大して、元の倍率に戻したい時のコードが知りたいです。 どのタイミングで戻すか知らんが、倍率に1.0や保持した倍率を入れればいいじゃろ 権限の許可ダイアログで許可するのを間違えて否認してしまった場合に再度許可ダイアログを出す方法はありませんか?
PendingIntent.getBroadcastでIntentFilterしてregisterReceiverします。
BroadcastReceiverの権限回答しており、AndroidManifestではintent-filterは記載していないです。
一度否認してしまうとアプリの再起動じゃないと権限ダイアログが出てこないです。
また、AndroidManifestのintent-filterでやっていた時は一度認証するとアプリを再起動しても権限出てこなくて便利だった。 アプリから端末のGoogleアカウントを知る方法がわかりません。
自分のアカウントの場合は隠し機能を有効にしたいと思ってです。 ダイアログを出して、5秒程度の処理が終わるとダイアログを消すコードですが、実行後にANRが出ます。
添削お願いいたします。
public AlertDialog dialog;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(getActivity())
.setTitle("Test1")
.setMessage("test1")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog = new AlertDialog.Builder(getActivity())
.setTitle("Test2")
.setMessage("test2")
.show();
new Thread(() -> {
try {
Thread.sleep(5000);
} catch (Exception e) {
} finally {
dialog.dismiss();
}
}).start();
}
})
.show();
}
}); >>193
new Threadでdialog.dismiss()してるのがいけないと思う
UIスレッド(メインスレッド)からじゃないとUIは操作できない
やること
↓
UIスレッドでHandlerを作る
new ThreadからはそのHandlerにpostしてdialog.dismiss();を実行する アドバイスありがとうございます。ソースのdialogはonClickの引数と同名でしたが実際は別名で、ここではdialog1とします。また、dismiss()は動作していたようでダイアログが消えて数秒経つとANRが出ます。アドバイス戴いたようにdismiss()をハンドラーにしましたが同じ結果です。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(getActivity())
.setTitle("Test1")
.setMessage("test1")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog1 = new AlertDialog.Builder(getActivity())
.setTitle("Test2")
.setMessage("test2")
.show();
new Thread(() -> {
try {
Thread.sleep(5000);
} catch (Exception e) {
} finally {
handler1.post(new Runnable() {
@Override
public void run() {
dialog1.dismiss();
}
});
}
}).start();
}
})
.show();
}
}); >>195
すみません、行数制限で改行を削ったのでお見苦しい表示になっていました。
ボタンのonClickでAlertDialog出してOKで更にAlertDialog出してのスレッド起こして5秒処理が最初のAlertDialogが閉じていないためANRになった感じです。
5秒を1秒にするとANRは発生しなかったです。
また、Handler(Looper.getMainLooper())を使わずに.dismiss()でダイアログを閉じても結果は同じですが、Handlerでやるべきですか? thread使わずともnew Handler().postDelayed(dialod1::dismiss, 5000)でいいよ
ついでにThreadでもhandlerでもダイアログを一定時間後に閉じる処理試したけど5秒でも10秒でもANR発生しなかった
消したいダイアログ内でなんか変なことやってるとかかね
まあ何をするかにもよるがtoastとかsnackbarとか別の手段がいいんじゃないかな >>197
実際のアプリは外部機器用のリモコンです。
ボタンを押すと「初期化しますか?」と再確認のダイアログ1が出ます。
Yesで「暫くお待ちください。」とダイアログ2が出て初期化コマンドを送信して、
返事が来るまでの時間が3~10秒くらいで自動的にダイアログ2が消えることを予定しています。
それまでにダイアログ1は消えてるはず。
ダイアログ2は他の操作をブロックする意味もあるのです。
ところでアプリ動作中は他のタスクに画面を取られないようにする方法知りませんか?
OnPauseすると安全のため外部機器に停止信号を送っているけどスマホをリモコンで占有したいのです。 アプリ側でコントロールする方法はない
いつ電話がかかってきてもいいように実装するべし
でもまあその目的ならservice使えばいいんじゃないかな >>199
UIが常にパネルに有って欲しい。
タブレットで電話無しでも良い。
居酒屋とかファミレスの注文端末みたいに使いたい。
アプリの終了ボタンで通常の操作な戻る感じで。 >>198
画面のオーバーレイは?
今でも使えるのか分からないけど
facebookのメッセンジャーは常に画面に表示されるよね? 非推奨になったというActivityResultの替えで次のようにしろと各解説サイトにあるんですが
ActivityResultLauncher<Intent> mGetContent = registerForActivityResult(new ActivityResultContracts.GetContent(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
// Handle the returned
}
});
この registerForActivityResult の部分が赤線になってどうにもうまくいきません。
使用言語はjavaです。javaの解説でもこうなってます。
このregisterForActivityResultはjavaでは使えないんでしょうか?Kotlinでなければ。 俺はよくわかんねーけどQRのスクショをgetするのに以下のコードを使ってる。
ActivityResultLauncher<Intent> _imageLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallbackFromImage());
// QRコードのスクショ取得要求処理
public void ImageCapture() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
_imageLauncher.launch(intent);
}
// QRコードのスクショ取得処理
private class ActivityResultCallbackFromImage implements ActivityResultCallback<ActivityResult> {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == RESULT_OK) {
if (result.getData() != null) {
//結果を受け取った後の処理
ParcelFileDescriptor pfDescriptor = null;
try {
Uri uri = result.getData().getData();
pfDescriptor = getContentResolver().openFileDescriptor(uri, "r");
if (pfDescriptor != null) {
FileDescriptor fileDescriptor = pfDescriptor.getFileDescriptor();
Bitmap bmp = BitmapFactory.decodeFileDescriptor(fileDescriptor);
pfDescriptor.close();
以下省略 ありがとうございます。
MainActivity extends Activityを
MainActivity extends AppCompatActivity
に変えることでビルドできるようになったのですが
今度は
onCreate()の
setContentView(layout);で
起動時に終了するようになってしまいました。
AppCompatActivityでsetContentViewを使う時は
何か注意が必要なんでしょうか? >>204
せめてonCreate()のsetContentView(layout);までのコードを見たい ASを最新のDolphinにしてからLVLのファイルで赤線が入るようになりました。
SDK等のversionは32にしてます。Gradleは7.5です。
以前のASでは警告はあったものの赤線はありませんでした。
ビルドするとAPKExpansionPolicy.javaというファイルが出て
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
のところに赤線が入りCannot resolve symbol 'NameValuePair'
No documentation found.となります。
このimportが通らないので以下
List<NameValuePair> extraList = URLEncodedUtilsや
item.getName()の部分にも赤線になります。
検索してもピンとくる情報は見当たりません。
一応ビルドはできて起動もできます。
それと古いLVLの解説ページではversionは2があるような画像がありますが
私の環境ではダウンロードできるのは1しか表示されません。
LVLファイルの格納場所もWebの情報と違ってmarket_licensingというフォルダ内にあるようです。
これも関係あるのでしょうか?
解決策やヒントがありましたらよろしくお願いします。 システムテーマ変更等によるActivity再描画時に最後に表示されていたFragmentを再表示したいのだけど…
最後に表示されていたFragmentの取得などどうやればいいんでしょ? 質問があります
同一Activity内に複数のSurfaceViewがあり、
同時に同じ内容の書き込み処理を
実現する場合はどうすればよいでしょうか?
| A | B |
みたいなLayoutでAに〇を書き込むと、その内容がBにも反映され
| 〇 | 〇 |
となるようにしたいです openFileInputをFragmentに記述するとCannot resolve method 'openFileInput(java.lang.String)'となります。
MainActivityでは使えています。
とりあえずMainActivityに関数定義して呼び出していますが、直接記述できないのかな? >>211
すみません。
FragmentだからgetContext()を忘れてました。 レイアウトのデザインでtextViewを
tools:layout_editor_absoluteY="0dp"でマージンも0で置いたのですが
上がぴったりくっつかずに結構な余白はできてしまってます。
これは原因はなんでしょうか?
ぴったり隙間ない0にするにはどうすればよいですか? >>214
自己解決した場合もその内容を書くべきだと思うよ。 よくわからないけど拾ってきたサンプル使ったらいけました。
多分スタイルとの相性だったのかと。 レイアウトわかりにくくてめんどくさい。 フラグメント間でStringデータのやり取りしたいのだけれども
受け取る側のフラグメントでデータが受け取れない
SafeArgs,Bundle,koinを使用したviewModelと試して見たけどそもそもデータが入ってなかった
どうすればいいのか こちらです
viewpager2に、tab1〜tabnと並べてFragmentStateAdapterでページの切り替えを行っています BundleやSafeArgsは画面遷移を伴った渡し方があったのですが、どこに引数として渡せばよいのか分からず。という理解です つか、Tab1FragmentのMainViewModelのスコープどうなってんの?
それだとフラグメントに結びついてるっぽいからMainViewModel のインスタンスがフラグメント毎に作成されるから渡せるわけない
ViewModel経由で渡す場合、フラグメントをホストしている共通のアクティビティのスコープでMainViewModel作成しないと駄目
もしくは
https://developer.android.com/training/basics/fragments/pass-data-between?hl=ja https://developer.android.com/topic/libraries/architecture/viewmodel/viewmodel-apis?hl=ja
スコープ意識しないと同じMainViewModelのインスタンスを参照できない
Tab1FragmentのViewModelの取得部分を
by viewModelsじゃなくて
by activityViewModelsとか
もちろん他の部分も スマホ2台のSocket通信でトラブっています
待ち受け側A(192.168.1.111)
public void WifiTaskRun() {
Thread WifiThread = new Thread(() -> {
try {
mServerSocket = new ServerSocket(1234);
mSocket = mServerSocket.accept();
~
}
~
});
WifiThread.start();
}
送り側B(192.168.1.112)
public void WifiTaskRun() {
Thread WifiThread = new Thread(() -> {
try {
mSocket = new Socket("192.168.1.111", 1234);
~
}
~
});
WifiThread.start();
}
AのWifiTaskRun()を呼び出してからBのWifiTaskRun()を呼び出すと、AはmServerSocket.accept()で止まっていて、
Bはnew Socket(~)でjava.net.NoRouteToHostException: Host unreachableでcatchされます。
何か間違ているのでしょうか? 宛先に到達できてないんだからルータの設定見直してみては >>226
解決しました。
Bのスマホ(SCG07)のWiFi設定でMACアドレスタイプがデフォルトの"ランダム化されたMAC"だったので"端末のMAC"にしたらOKでした。
Aのスマホには設定がありません。
android studioのWiFiデバッグも知らない間に設定が消えるので、これが原因だったのか?
"ランダム化されたMAC"でも動作させたいけどどうしたら良いのか? >>227
解決と思った、また同じ現象になった。
今度はランダムで設定して動作したが、何か不安定だ? ルーターのMACアドレスフィルター機能を無効にしたらOKだった。 MACアドレスフィルタとステルスSSIDは百害あって一利なし デスクトップにprivate_key.pepkがあるけど何に使うのですか? attachBaseContextでSharedPreferences prefs = getPreferences(Context.MODE_PRIVATE)を使いたかったが例外が発生するのか? NDKってバグ多いよな
問題点や回避方法がまとまってるところとかある?
●NativeActivity & EGL
ウィンドウサイズ変更後最初の描画がくずれる
●AAudio Input
デフォルトプリセットだと入力データレートがおかしい機種がある
プリセットによって音が入力されない機種がある
ステレオ入力でも左チャンネルしか音が入力されない機種がある
(たいていの機種が何かしら問題がある) ή∞!!!!
粉∞!!!!!
堅∞!!!!!!
W∞!!!!!!!
刃∞!!!!!!!!
輔∞!!!!!!!!!
書∞!!!!!!!!!!
棚∞!!!!!!!!!!! ナビゲーションメニューで組んでいますが、8インチとかの大きな画面にも対応した、UIの例ありませんか? Bluetooth 5.1で追加された「方向検知機能」を知ろう
https://edn.itmedia.co.jp/edn/articles/2003/31/news022.html
SDKで方向検知の値(AoAやAoD)に対応していますか?
試してみてもRSSIは取得出来ますが、方向検知はみつからなくって ■ このスレッドは過去ログ倉庫に格納されています