Android関連のことを調べてみた2020年04月03日

Android関連のことを調べてみた2020年04月03日

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**を使う

> pytorch-mobile.png

#モデルの作成
まずはアンドロイドで動かすための線形モデルを作っていく。
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

元記事を表示

OTHERカテゴリの最新記事