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

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

TextView上のURLリンクで任意の処理を実行する

# 概要
 TextView 上に表示された html のリンクをクリックした際に任意の処理を実行する方法の説明です。

※コードからサクッと概要を把握したい方は [こちら](https://qiita.com/beyondseeker/items/690b5d5293d7c9dddc50#-kotlin-%E3%81%AE-extension-%E7%89%88) を見ていただければ瞬殺だと思われます。

## ◆ 背景
 TextView では [fromHtml](https://developer.android.com/reference/kotlin/androidx/core/text/HtmlCompat#fromhtml) を用いて HTML を表示することができます。

“`kotlin
textView.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_COMPACT)
“`
しかし、リンク押下時に、ブラウザに表示させる以外の方法を用いたい時もあります。

## ◆ 振る舞いを変えたい例
 T

元記事を表示

【動画解説付き】初心者のためのAndroidアプリ開発方法 ~この記事だけ見ればOK~【Android Studio/Kotlin/Windows 10】

![サムネイル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538330/70bfedda-3c3e-f5d4-c3ac-887ad70d07cb.png)
どうも、プログラミングの鬼シヨツ鬼です。
この記事は**「Androidアプリ開発始めたいぜ!だけど初心者だぜ」って人に向けて、この記事だけ見れば、開発に必要なソフトのダウンロードから、サンプルアプリを作って実機で動作させるまでができる**チュートリアル記事です。
初めてアプリ作る人は、この記事を参考にアプリ作りのはじめの一歩を踏み出しちゃってください!

ちなみに、この記事は次の動画と同じ内容ですので、記事だけだと分かりづらい部分は、そちらもご活用ください。
**(ボタンの位置や操作方法などがわかるので、初心者の方は動画のほうが分かりやすいかも)**
[【最短最速】初心者のためのAndroidアプリ開発環境構築方法 ~Android Studioのインストールから実機動作確認方法まで~](https://youtu.be/48nyjRfyxLc

元記事を表示

【Kotlin】YouTubeAPIを用いて動画再生まで行う

#はじめに
 この記事では、youtubeAPIを利用してyoutube動画を再生する方法の基本の基本を書き記しています。このAPIを使うには、GoogleAPI keyが必要になるので各自で準備をお願いします。(入手は無料で簡単です。)

#準備
 youtubeAPIをAndroid Studioに実装する必要があります。以下のリンクから、YouTube Android Player APIの最新バージョンをダウンロードしてください。
https://developers.google.com/youtube/android/player/downloads/?hl=ja
 ダウンロードしたzipファイルを解凍し、android studioのlibsフォルダーに移します。ProjectタブのProjectビューからではないとアクセスしにくいので、注意してください。(Androidビューからでは✖)ポップアップはOKを押して、以下の画像のようになったらOKです。

キャプチャ.PNG【Flutter】GoogleDriveへのバックアップ・リストア機能を実装するまでの道のり

![トップ2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228439/7356a55f-67ae-8929-5042-ca79983f4a38.jpeg)

7月にFlutter開発を初めてから2作目のメモアプリ「IdeaShuffleMemo」をリリースしました。
■AppStore
https://apps.apple.com/jp/app/id1517535550

■Google Play
https://play.google.com/store/apps/details?id=com.IdeaShuffleMemoApp&hl=ja

■アプリの詳細記事

ひらめきたい!あなたに!アイデアを発想するためのメモアプリ「IdeaShuffleMemo」

3つの機能を実装しようと取り組みました。この記事では、その中のバックアップ機能を実装する方法を書いていきたいと思います。

■パスワードロック機能実装ついてはこちら
https://qiita.com/YuKiO-OO/items/bf2d1d107d1a6

元記事を表示

android-samplesのdev-hiltブランチのHiltの実装を読んでみる

Dagger Hiltを使った場合に、まだどのように実装していくのが良いのかよくわかっっていない部分があるので、公式の実装に近そうな、android/architecture-samplesのdev-hiltブランチを読んでいきます。
Dagger Hiltのサンプルとして実用的に見えるものがここに上がっているようなので、参考に見ていきます。
https://github.com/android/architecture-samples/tree/dev-hilt
以下時点のコードになります。
https://github.com/android/architecture-samples/tree/f2fd9ce969a431b20218f3ace38bbb95fd4d1151

Dagger Hiltは以下のようなコンポーネントが最初から用意されています。それぞれのコンポーネントにどのようにインスタンスがひもづいているのか見ていきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

TextView#setMovementMethodメソッドはsetTextメソッドの前に呼んではダメ

# 概要
TextViewの中にあるURLのリンクを押したときの動きをMovementMethodを使って書き換えようとしたのだが、RecyclerViewにBindされるViewHolderが保持してるViewの中にあるTextViewに適用したところうまく動かずハマった。

基本は[こちら](https://qiita.com/le_skamba/items/cca74696095cbbb65cc3)通り実装したのだが、文中にurlリンクがないときはMovementMethod#onTouchEventメソッドが呼ばれるのだが、リンクがあると文中のどこを触っても呼ばれない。

丸一日頭を悩ませていたが、最終的にTextViewのソースをあたってみたところ、setMovementMethodメソッドの呼ぶタイミングについてドキュメントにない条件があったことが分かったので共有。

# 原因・結論
TextViewのsetMovementMethodメソッドsetTextメソッドの前に呼んではダメ!!

# 詳細
TextViewのソース (https://android.googles

元記事を表示

Flutterメモアプリでパスワードロック・生体認証ロック機能をす方法

![トップ2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228439/7356a55f-67ae-8929-5042-ca79983f4a38.jpeg)

7月にFlutter開発を初めてから2作目のメモアプリ「IdeaShuffleMemo」をリリースしました。
■AppStore
https://apps.apple.com/jp/app/id1517535550

■Google Play
https://play.google.com/store/apps/details?id=com.IdeaShuffleMemoApp&hl=ja

■アプリの詳細記事

ひらめきたい!あなたに!アイデアを発想するためのメモアプリ「IdeaShuffleMemo」

その中でパスワードロックの機能を実装したのですが、今回はそのやり方を少しだけ紹介していきたいと思います。

■別の記事
【Flutter】GoogleDriveへのバックアップ・リストア機能を実装するまでの道のり
https://qiita.com/Y

元記事を表示

ExoPlayerで再生中にイヤホンやbluetoothが外れた際に停止させるには

単発です 備忘録として

# 環境

“`build.gradle
def exoplayer_version = “2.11.6”
implementation “com.google.android.exoplayer:exoplayer:$exoplayer_version”
“`

# 実装

“`sample.kt
private var player: SimpleExoPlayer? = null

// 中略

player?.setHandleAudioBecomingNoisy(true)
“`
※ SimpleExoPlayerのinit処理部分は省略しています
※ バージョン2.11.0からある模様です

自前で実装するとなると[`ACTION_AUDIO_BECOMING_NOISY` intentをブロードキャストし処理](https://developer.android.com/guide/topics/media-apps/volume-and-earphones#becoming-noisy)する必要があるのでたったのこれだけですむとはとても

元記事を表示

Eclipse+ADT(build:Maven2)で作ったAndroidアプリをAndroid Studio(build:gradle)に移行した記録

# マシンスペック
* Mac mini 2018
* macOS Catalina(10.15.x)
* Intel Core-i7 3.2GHz 6コア
* メモリ 32GB
* SSD 512GB

# 今までの開発環境
* Windows 10
* DELL XPS 13
* Intel Core-i7
* メモリ 8GB
* SSD 256GB
* Eclipse 4.5(だったかな?)
* ADT最新版

# やること
* 開発環境をEclipse+ADT → Android Studioへ移行
* ビルド環境をMaven2 → gradleへ移行

# 何故やるか?
* AdMobの広告ポリシー違反で広告を止められ、広告収入がゼロになった
* 推定2年放置してたが、再審査の改修が必要なので、開発環境をMacに移行する
* せっかくなので、モダンな開発環境にしたい

# 移行するアプリ
* [バスくる for 東急バス](https://play.google.com/s

元記事を表示

【Unity】2019.4 Android実機でTextureが透過してしまう

## Unityバージョン
2019.4.2f1

## 症状
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237014/5c1b6a3c-6a6e-0c3b-bcd5-23af8e03dd22.png)

## 解決方法
Render Over Native UI のチェックを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237014/a6aa07ec-a14a-0463-fb11-b3fced676f24.png)

元記事を表示

Firebase Crashlyticsを効果的に使うお話

## 最初に

今回はユーザーさんからのクラッシュの問い合わせをCrashlyticsを使い
どうしたら素早くやバグを解決できるか考えてみました。
デバッグって大変ですよね。

導入自体については、公式のドキュメントをご確認ください。
https://firebase.google.com/docs/crashlytics?hl=ja

今回は、Android javaでのコードを記載しました。

## ユーザーID検索

ユーザーがログインした時などにユーザーの情報をセットしていくと、文字列をいれて送ることができます。

“`java
Crashlytics.setUserIdentifier(“userid-12345678910”);
Crashlytics.setUserEmail(“userid-email”);
Crashlytics.setUserName(“userid-name”);
“`

そうするとこれはクラッシュ詳細の「データ」のタブに表示されます。
この画像の右下あたりのユーザーの部分です。
スクリーンショット</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Android</div>
<div class='tag-cloud-link'>iOS</div>
<div class='tag-cloud-link'>Firebase</div>
<div class='tag-cloud-link'>FirebaseCrashlytics</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/ueno-yuhei/items/4f513e2b650e802a5249'>元記事を表示</a></div>
<h3 id=ActivityResultContractsの仕組みを調べてみる

activity:1.2.0、fragment:1.3.0 からActivityやFragmentの `startActivityForResult` / `onActivityResult`、`requestPermissions` / `onRequestPermissionsResult` あたりがdeprecatedになるそうですね。`ActivityResultContracts`を使えと言うことだそうです。
ちょっと使ってみたところ、良さそうなんだけど、どういう仕組みになっているのか気になったので調べてみました。

## おさらい

### startActivityForResult いままで

今まで、他のActivityから結果を受けとるには以下のようにしていました。

リクエスト

“`kotlin
startActivityForResult(intent, REQUEST_CODE)
“`

結果の受け取り

“`kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int,

元記事を表示

Google製 通信ライブラリ Cronet

## Cronetとは

Google製の通信ライブラリ
https://developer.android.com/guide/topics/connectivity/cronet?hl=ja
Sample
https://github.com/GoogleChromeLabs/cronet-sample

AndroidDeveloperによると、YoutubeなどGoogleアプリで使われているとのことでした。

Retrofit + Okhttp一強の時代(だと思っている)ですが
他のネットワーク系のライブラリに触れる機会がなかったので勉強がてらに触ってみました。

## 使い方
ともあれ早速使ってみましょう!

サンプルのリポジトリには、ソースをcloneして使ってくれとあるのですが、mavenリポジトリに登録がありました。
https://mvnrepository.com/artifact/com.google.android.gms/play-services-cronet

“`gradle
dependencies {
api “com.google.an

元記事を表示

折り返し表示もこれで怖くない! Google製ライブラリ【FlexboxLayout】

## FlexboxLayout
https://github.com/google/flexbox-layout
https://developers-jp.googleblog.com/2017/03/build-flexible-layouts-with.html

こういう表示を折り返し部分をやってくれる
スクリーンショット 2020-07-05 12.35.22.png

タグ表示などで使えそうです。

1、一つのViewの中にViewを配置すると自動で折り返しくれるFlexboxLayout
2、RecyclerView内のViewを紐づけるFlexboxLayoutManager(LayoutManager)
があります。

スクロールするような画面では、RecyclerViewの仕組みでViewが再利

元記事を表示

LiveDataをObserveする際の注意点

## 概要

みんなLiveDataって使ってますよね!LiveData便利ですよね!
でも意識していないと意図しない動作になってしまうことがあります。
本稿ではそんな落とし穴になり得る書き方の一つを紹介します。

## TLDR
LiveDataの`observe`メソッドを呼び出した際、LiveDataにイベントが保持されていればイベントを処理してしまう

## LiveDataの頻出パターン
まずはLiveDataを使う上での頻出パターンを紹介します。

以下のような仕様がある前提で本稿を進めていきます。

“`
LIVEボタンをタップした時にだけスナックバーを表示する。
“`

まずViewModelにLiveDataに値を流すための処理を書きます。

“` ViewModel
class FirstViewModel: ViewModel() {
// 外から値を流せないようにするために、mutableLiveDataはアクセス修飾子をprivateにしている。
private val mutableLiveData = MutableLiveData

元記事を表示

(Android Studio)Gradleのプロキシ設定のやりかた

#エラーの概要
学校や職場では、ネットワークにプロキシ(Proxy)サーバーが使われている。その環境下でAndroid開発を行うと、プロキシサーバーエラーになってしまう。
僕の場合は、学校のネットワークで開発を行っていました。Android studioのプロキシ設定は、**[File]→[settings]→[Appearance&Behavior]→[System Settings]→[HTTP Proxy]**から設定できます。

しかし、僕の場合はこれでは解決しませんでした。Gradleエラーになっていまうのです。

#解決策
**Android Studio 4.0**で確認できました。
こちらを参考にしました。 https://qiita.com/hishida/items/9479fb64a016032c0938

##1.gradlewかgradlew.batに以下を記述

“`
set JAVA_OPTS=-DproxyHost=myproxy.co.jp //プロキシサーバーのアドレス
-DproxyPort=8080

元記事を表示

Kobiton でスマートフォンのリモートテストを試してみた

# 概要

昨今のテレワーク推進の中、スマートフォン開発における課題となるのが実機による動作検証です。
多種多様なスマートフォン端末の準備・利用は、利用者それぞれがテレワークしていると難しくなります。

今回は上記課題を解決しうるリモート実機動作検証サービス [Kobiton](https://kobiton.com/) について調査しました。

## TL; DR

– Kobiton https://kobiton.com/ はリモート実機検証できるサービス
– ブラウザからリモートの実機を操作して手動・自動での動作検証が可能
– デスクトップアプリを利用すると、自分たちで用意した実機を使っての動作検証も可能
– 30日間無料トライアル

# リモートの実機による動作検証

Kobiton がクラウド上に用意した実機を使って動作確認を行うことができます。

## 利用可能な端末

利用可能な実機の一覧は以下のURLから参照できます。

https://docs.kobiton.com/devices-list/

2020年7月4日時点で208種類のAndroid・iOS端末を利用

元記事を表示

[Modern Android] Jetpack Compose その5

こんにちは!7月にになりましたね。

前回に引き続きJetNewを続いて見ながら、
Jetpack Composeを理解しようと思います。
出来ればFlutterと比べながらみようと思います。

#今回

HomeScreenのbodyContentを見てみましょう。
drawerContent、topAppBarは前回に確認しました。

> bodyContent = { modifier ->
HomeScreenContent(postsRepository, modifier)
}

“`kotlin

@Composable
fun HomeScreen(
postsRepository: PostsRepository,
scaffoldState: ScaffoldState = remember { ScaffoldState() }
) {
Scaffold(
scaffoldState = scaffoldState,
drawerContent = {

元記事を表示

Firebase Remote Configの挙動について

RemoteConfigは便利なんですが雰囲気で使うと思ったように動かなかったりするのでちゃんとまとめようと思います.

※ QiitaのほうがSEO強そうなのでブログに書いた内容の転載ですが同じものを投稿しておきます
-> https://iwsksky.hatenablog.com/entry/2020/07/04/114815

## TL;DL
– fetchAndActivateをするとremoteの値がローカルに保存され参照可能となる
– ローカルキャッシュの期限は最短でも12分でそれ以上の頻度では更新できない
– 参照は通信結果ではなく常にローカルキャッシュの値

## 概要

https://firebase.google.com/docs/remote-config/images/param-precedence.png?hl=ja
図1. RemoteConfig概要図[1]

抑えておきたい概念は以下の通り

– cache
– fetch/activate
– interval

1個ずつ見ていきます.

#### cache

RemoteConfigは常に

元記事を表示

Androidスマホ・タブレットは何でもできる!Termuxで動かすアレコレまとめ

「使ってないAndroidスマホ,タブレットがある」
「これサーバーにできないかな?」

その夢,**かなえられます。**

少々めんどくさい作業もありますが,やっていけば必ずできます。

# どうやって動かすか
Androidには「Termux」というアプリがあります。
これを使うと,Linuxを動かすことができます。
パッケージもAPTで管理されていて,豊富です。

https://play.google.com/store/apps/details?id=com.termux&hl=ja

また,GBoardなどのキーボードですと不便を感じるかもしれません。
「Hacker’s Keyboard」がおすすめです。

https://play.google.com/store/apps/details?id=org.pocketworkstation.pckeyboard&hl=ja

## 下ごしらえ
Linuxに触れたことのある方は慣れていると思います。

まず,Termuxが端末内のファイルにアクセスできるようにするには権限を与える必要があります。

“`bash
$ te

元記事を表示

OTHERカテゴリの最新記事