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

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

バックグラウンド音源をミュート

効果音を再生する時に裏で音楽再生アプリ等で再生していると音が重なって聞き取れない!
という時にバックグラウンドの音を一時的にミュートする方法

バックグラウンド音源をミュート

“`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

元記事を表示

【Flutter】バグ解決: Bad state: Stream has already been listened to.

## 今回の件のGitHubはこちら
https://github.com/Tetsukick/flutter_BLoc/commit/76748e912be5896f8e998a5a50244fcb77d659b6

## 現象

StreamControllerを使ってBLoCパターンでstatement管理をしていたが、TabBarViewを追加して、
Tabを切り替えて、再度同じタブに復帰した際に画面の表示が崩れるようになりました。

その際のerrorがこちら。

“`
Bad state: Stream has already been listened to.
“`

## 解決策

`StreamController`ではなく、`BehaviorSubject`を使用することで解消

元のソースコード

“`dart:エラー解消前
import ‘dart:async’;

class CounterBloc {
// input
final _actionController = StreamController();
Sink

元記事を表示

DataBindingを使っているChipをChipGroupに動的に追加/削除する

## 要件
– アプリ全体ではDataBindingを使っているものとする
– Chipの個数は可変であり、動的に増減させることが出来る
– Chipには✕ボタンを表示し、押したら消えるようにする

## 実装
### ライブラリの追加
Chipを使うためのライブラリを追加する。

“`gradle:app/build.gradle

dependencies {
(中略)
implementation ‘com.google.android.material:material:1.1.0’
(中略)
}
“`

### AppThemeの変更
Chipを使う際にAppComponentだとクラッシュするので暫定対応。
本記事では`Theme.MaterialComponents.Light.DarkActionBar`を利用している。

“`styles.xml


OTHERカテゴリの最新記事