- 1. Android ぱっと見でわかるConstraintLayout
- 2. Android JetpackのWorkManagerの使い方
- 3. androidのAPKを解析する。デコンパイル&デバッグ
- 4. エラー:Gradle sync failed: Cause: invalid type code: 85 の対応[AndroidStudio]
- 5. 貴方に向いた端末は
- 6. ViewModelとLiveDataを使ったDialogFragmentのコールバック
- 7. バックグラウンド音源をミュート
- 8. MVVM + DataBinding でHello World
- 9. Flutter環境構築 – 1(Flutter SDKインストール編)
- 10. Flutterで環境構築からHelloWorld & スプラッシュまでやってみた。【HelloWorld&スプラッシュ編】
- 11. [Android]ページ毎にデータを読み込む RecyclerView を作ってみる
- 12. Androidで現在地情報を偽装する
- 13. Google Play ConsoleでのANRの調査
- 14. アンドロイドで線形回帰モデルを使って推論してみる[PyTorch Mobile]
- 15. 初心者の初心者による初心者のためのAndroidアプリ開発
- 16. ViewModelProviderクラスを定義せずにViewModelを生成する
- 17. 【HelloAR】Unity 2019でARCore SDK for Unity v1.16.0 を実装する
- 18. Activity内に定義したAsyncTaskのネストクラスに警告「This ‘AsyncTask’ class should be static or leaks might occur」
- 19. Theme.AppCompat.Light.NoActionBar を使っているアプリの Toolbar のテキスト、アイコンの色を白くする。
- 20. 消せないAndroidアプリをadbを使って強制アンインストール
Android ぱっと見でわかるConstraintLayout
`ConstraintLayout`で最低限おぼえておくべき4つ
* layout_constraintTop_toTopOf
* layout_constraintTop_toBottomOf
* layout_constraintStart_toStartOf
* layout_constraintStart_toEndOf![android-layout01_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142879/0dd9d077-900a-d356-4124-59b86a463548.png)
Android JetpackのWorkManagerの使い方
#Android JetpackのWorkManagerの使い方
JetpackはAndroidデベロッパーのために開発されたライブラリ、ツールなどのことを総称したものです。
今回はその中のWorkManagerという機能について説明します。https://developer.android.com/jetpack?hl=ja
##WorkManagerとは
APIの一つで、アプリが終了したり再起動しても延期できるタスクをスケジューリングする機能のようです。
定期的なサーバとの同期や、ログなどの送信に便利そうです。https://developer.android.com/topic/libraries/architecture/workmanager?hl=ja
下記が下位互換性
API 23 以上が搭載されたデバイスでは JobScheduler を使用
API 14~22 が搭載されたデバイスでは BroadcastReceiver と AlarmManager を組み合わせて使用JobSchdulerなどは確かによく使われていましたが、これをさらにパッケージ化し
androidのAPKを解析する。デコンパイル&デバッグ
とあることからアプリを解析することになった。
以下はその手順。参考)
https://coky-t.gitbook.io/owasp-mstg-ja/android-tesutogaido/0x05c-reverse-engineering-and-tampering##### アプリを準備
当たり前なので割愛。
(~~ipaは取り出しにくい~~)## apktoolのダウンロード
apk形式はzipなので、apk→zipと拡張子を変えても展開はできる。
ただ、apktoolのほうがリソースをデコードしてくれたり、dexを変換してくれたりと便利
macなら`brew install apktool`で可能。コマンド入ったら、`apktool d hoge.apk`で展開される。
ちなみにアプリのファイル形式がapkxという場合もあるみたい。
これは複数のapkをまとめた形式なので`unzip`などで一度解体してからでも可。## 解体した内容
resにリソースなどが含まれる。
javaの内容は`classes*.dex`というファイルにまとまっている。
`d2j-
エラー:Gradle sync failed: Cause: invalid type code: 85 の対応[AndroidStudio]
## 概要
– 2~3ヶ月ぶりにAndroidStudioを起動したら、既存、新規を含めてすべてのプロジェクトが動かなくなった件。– 結論としてはJDKをAndroidStudio内蔵の物に変更したらエラーがなくなって動くようになった。
– イベントログに表示されていたエラーコードは以下になります。
“`Gradle sync failed: Cause: invalid type code: 85“`## 引用情報
下記のサイトの内容を参考に対応をした。
[Gradle Sync Failed in Android Studio 3.6 Cause invalid type code :85](https://translate.googleusercontent.com/translate_c?depth=1&hl=ja&prev=search&rurl=translate.google.com&sl=en&sp=nmt4&u=https://stackoverflow.com/questions/60435743/gradle-sync-failed-in-andr
貴方に向いた端末は
#じゃあまず使用方法を教えてくれるかな
|使用方法|Windows|MacOSX(MacBookシリーズ)|iPhone|Android(スマホ)|Android(タブレット)|iPad|ChromeBook| 感想 |
|—|—|—|—|—|—|—|—|—|
|ブラウジング|〇|◎|△|△|◎|◎|◎|広い画面でUIが使いやすいとブラウジングしやすい。性能とかより機動性が大事|
|動画編集|×~◎|◎|△|×~△|×~〇|△~◎|×~△|性能が低かったり画面が小さいと厳しい。|
|電子書籍|△|〇|△|△|◎|◎|〇|ChromeBookを買うときはAndroidアプリ対応機種を買うこと。|
|絵を描く|△|〇|△|×~△|△~◎|〇~◎|×~△|動画編集ほどではないが性能が必要|
|ゲームをする|△~〇|×~△|〇|△~◎|△~◎|〇~◎|×|もしあなたがゲームを楽しみたいのなら機動性や可用性が優れたハイエンドタブレットorハイエンドスマホのどちらかが必要。Windowsはエロゲは揃いが良いらしいがそれ以外(特にゲーム性の良いゲー
ViewModelとLiveDataを使ったDialogFragmentのコールバック
2020年にもなっていまだにDialogFragmentのコールバック最適解がないのでGoogleは早くJetPackに作ってほしい
“`kotlin
class MainActivity : AppCompatActivity() {private val viewModel: DialogViewModel
by viewModels() override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)if (savedInstanceState == null) {
SampleDialogFragment().show(supportFragmentManager, “sample”)
}viewModel.result
バックグラウンド音源をミュート
効果音を再生する時に裏で音楽再生アプリ等で再生していると音が重なって聞き取れない!
という時にバックグラウンドの音を一時的にミュートする方法バックグラウンド音源をミュート
“`java:
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
AudioFocusRequest focusRequest =
new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK)
.setAudioAttributes(new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
MVVM + DataBinding でHello World
# はじめに
「Hello World」をDataBindingで作ったのでメモ。# 目標物
![Untitled Diagram (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472695/47230b21-38cd-c98c-de5c-4baeeeb63d9b.png)# 構成
![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472695/b4c7f8f8-cb97-f3d6-5984-482c8713d0bf.png)Viewには、値を表示するTextViewとイベント発生用のButtonのみ配置。
それぞれをViewModelの変数やメソッドとバインドさせる。
画面に表示するデータの保持、整形はModelが担う。# やったこと
## 1. Gradle Scriptに追記
DataBindingを有効にするために、以下のように追記する。“`gra
Flutter環境構築 – 1(Flutter SDKインストール編)
#はじめに
Flutterの開発環境構築の手順について解説していきます。
今回は「Flutter SDKインストール編」です!
今後「Xcodeインストール編」「Android Studioインストール編」「VS codeインストール編」も随時執筆していく予定です。
さらにその後には「シミュレーターでの動作確認編」「アプリ実行編」なども執筆予定ですのでしばらくお待ちいただけると幸いです。
また今回の解説では、私自身がmacOSを使用しているということもあり、**macOS**での手順解説となります。
Windows・Linuxを使用されている方は別途、Flutter公式サイトの[Windows版](https://flutter.dev/docs/get-started/install/windows)・[Linux版](https://flutter.dev/docs/get-started/install/linux) などをご参照下さい。#「Flutter SDKインストール編」でやること
本記事では、以下の項目を行います。– Flutter SDKをインストールする
–
Flutterで環境構築からHelloWorld & スプラッシュまでやってみた。【HelloWorld&スプラッシュ編】
お久しぶりです。
多忙な日々を送っていたらもう4月になってました。今更感がすごいのですが前回の[環境構築編](https://qiita.com/amita/items/2b19bbbecfb48f68673f)からそのまま放置状態だったので
今回は簡単なスプラッシュ〜Helloworldを作成していきましょう。## 画像を呼び出せるように設定する。
スプラッシュスクリーンで画像を表示しようと思うのでpubspec.yamlにて下記の設定を追加します。“`pubspec.yaml
flutter:# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true# To add assets to your application, add an as
[Android]ページ毎にデータを読み込む RecyclerView を作ってみる
# はじめに
ページ毎にデータを読み込む RecyclerView を作ってみたいと思います。
アーキテクチャは Google が推奨している MVVM を利用して、次の手順で作成を進めます。| No | タイトル |
| ——– | ——- |
| Step 0 | 必要なライブラリをセットアップする |
| Step 1 | Retorift でページ毎のデータを取得する |
| Step 2 | PagedList でページ毎のデータを管理する |
| Step 3 | RecyclerView に PagedList のデータを表示する |
| Step 4 | 作成したクラスの動作を確認する |作成したときの完成イメージは次のような感じになります。
[![Image from Gyazo](https://i.gyazo.com/4b32170ba52e3513a0dd8918366ef2ff.png)](https://gyazo.com/4b32170ba52e3513a0dd8918366ef2ff)
# TL;DR
– Pa
Androidで現在地情報を偽装する
# はじめに
位置情報を扱うアプリを実装していると現在地情報を特定の場所に変更したいことがあったりします。これまではPlayストアにある現在地偽装アプリをインストールして利用していましたが、異なる開発機で毎回Googleログインをしてインストールするのが手間だったのでアプリ内で実装しました。## 注意
今回紹介する現在地情報偽装をした状態でポケGOやDQウォークをすると**BAN対象**になる可能性があります。当方では責任を負いませんのでご了承ください。# 現在地情報偽装機能の実装
## 権限
位置情報を偽装するためには専用のパーミッションが必要となります。“` xml:AndroidManifest.xml
…
…
“`
Google Play ConsoleでのANRの調査
`Google Play Console`では、アプリのクラッシュやANRの発生ログを確認することができます。
ANRは、クラッシュに比べると発生原因や再現手順を比較的追いにくい場合が多いです。私も、最初はANRのログをどう追えばいいかわからなくて苦労したので、`Google Play Console`でのANRの調査についてまとめました。
#ANRの基本的な知識
念のため、はじめにANRの基本についても書いておきました。
基本的な内容なので、読み飛ばしていただいでも結構です。#ANRとは
ANRは、`Application Not Responding`の略です。
その名の通り、アプリが応答していないことをユーザーに伝えるための仕組みです。ANRが発生すると、「アプリケーション応答なし」のダイアログが表示されます。
「ボタンをタップしたらフリーズした…:fearful:」といったときに、表示されるダイアログがANRのダイアログです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co
アンドロイドで線形回帰モデルを使って推論してみる[PyTorch Mobile]
#今回やること
python で線形回帰モデルを作ってそのモデルを使ってアンドロイド上で**推論する**。(アンドロイド上で学習させるわけではありません。)今回のコードはgithubに載せているので適宜参照してください。(最下部にURL掲載)
今回作るやつ↓
・**PyTorch Mobile**を使う
>
#モデルの作成
まずはアンドロイドで動かすための線形モデルを作っていく。
python環境がな
初心者の初心者による初心者のためのAndroidアプリ開発
#はじめに
最近はコロナウイルスのおかげで勉強がはかどっています笑 2回の投稿を終えてAndroidアプリ開発もそれなりに進んだ内容となってきました。そして、今回は既存のウェブサイトと連携したアプリを作成していきたいと思います。Androidアプリの方で都市を選択すると対応した現在の天気情報を取得して表示するという形式のものです。実用性のあるものなので頑張っていきましょう。
#AsyncTaskの作成
今回のアプリの初期状態では、次の画像のように都市のリストが上半分に表示され、下半分にウェブサイトから天気情報を取得して表示するようになっています。
文字列情報の追加とレイアウトファイルの編集は前回までの学習内容でできると思いますので頑張ってみてください。res/values/strings.xml
~~~
ViewModelProviderクラスを定義せずにViewModelを生成する
## はじめに
つい最近ViewModelを触り始めたのですが、当初は律儀にViewModelProvider(s)を使っていました。
しかし、fragment-ktxを使うことでかなり簡素にViewModelを生成出来たので自分用に纏めておきます。## 実装
jvmTargetを1.8に指定し、`lifecycle-viewmodel-ktx`と`fragment-ktx`を追加する。
“`gradle:build.gradle
android {
kotlinOptions {
jvmTarget = ‘1.8’
}
}dependencies {
implementation “androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0”
implementation “androidx.fragment:fragment-ktx:1.2.3”
}“`
### 引数なしの場合
まずは引数なしのViewModelから。
とりあえず引数なしのViewModelを定義する。
i
【HelloAR】Unity 2019でARCore SDK for Unity v1.16.0 を実装する
# はじめに
久々にARを実装してみようと思いました。[Google公式 Quickstart for Android](https://developers.google.com/ar/develop/unity/quickstart-android)を見れば簡単に作れますね。環境
– Unity 2019.3.7f1
– ARCore SDK for Unity v1.16.0
– Google Pixel 3a# Unityの環境を確認し、必要なパッケージをダウンロードする
モジュールはUnity Hubからダウンロードする
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556110/18376c87-92e8-0680-901a-e8341dc6f89c.png)Unity 2019を使う場合は`Multiplayer HLAPI`と`XR Legacy Input Helper`のパッケージが必要なのでダウウンロードしましょう。
`Window`→`Package Mana
Activity内に定義したAsyncTaskのネストクラスに警告「This ‘AsyncTask’ class should be static or leaks might occur」
この記事は、
「[非staticネストクラスが握っちゃう、エンクロージングオブジェクトの暗黙的参照](https://qiita.com/wakwak/items/21da22045c2d084fdd33#comment-21887e3165e8d82845a9)」と題した投稿の続きです。
ですので、先にそっちをご覧いただければ幸いです。
そっちの記事は、頭ごなし的に言っちゃえば、「ネストクラスには、`static`修飾子を付けろ」です。# いきなりカウントアップしだすアプリを作ってみた、ら…
起動したとたんに、勝手に1秒刻みでカウントアップが始まります。
START!から始まったら「9」まで数え上げたらお終いです。
(このアニメーションGIFは、3まで至ったらまたSTART!を繰り返しているアニメーションですが、このQiitaに貼り付けたアニメーションGIFを止めるすべがないのでごめんなさい)![countup.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100612/cd7b052b
Theme.AppCompat.Light.NoActionBar を使っているアプリの Toolbar のテキスト、アイコンの色を白くする。
こんばんは。普段業務と個人で Android をゴリゴリ書いています。
今回、Toolbar の icon を白くしようとして少しハマったのでその備忘録です。
かなり限定的な場面で使用するので需要はそんなにないかと思いますが、同じ場面ではまった方の力になれば幸いです。## アプリの設定
“`xml:AndroidManifest.xml
消せないAndroidアプリをadbを使って強制アンインストール
## 前提
adbコマンドを実行できることが前提です。
また、開発者モードをOnにして、USBデバッグモードでPCに接続してください。
## スマホに接続する
`adb shell`を実行して、スマホに接続します。
## 削除したいアプリのpackage名を調べる
`am monitor`を実行する。
`am monitor`は、起動するアプリをリアルタイムで把握するコマンドです。
`HWPOT-H`はスマホの機種によって変わると思います。
“`bash
HWPOT-H:/ $ am monitor
Monitoring activity manager… available commands:
(q)uit: finish monitoring
“``am monitor` を実行した後、アンインストールしたいアプリを起動することで、下のようになります。
“`bash
HWPOT-H:/ $ am monitor
Monitoring activity manager… available commands:
(q)uit: finish m