Android関連のことを調べてみた2021年01月25日

Android関連のことを調べてみた2021年01月25日
目次

MSAL(Microsoft Authentication Library)を使用したSSOにおけるアクセストークンの有効期限について

# 背景
上司いわく、MSALを使用してSSOを行うと、アクセストークンの有効期限が1時間だから
1時間毎に再認証が必要で、スマホ使っている人がアカウントを再選択する必要があるらしい。

個人的には、それマジ?その仕様だと実際使いづらいと思うしなんかいい感じに更新してくれるんじゃないの?
って思ったんですけど、ちゃんと調べた事は無かったので調査しました。

# 結論
1時間毎に再認証する必要はない。
ドキュメントから、デフォルト90日間連続して操作しなかった場合には再選択が必要になる。

# ドキュメント調査
以下のリファレンスには期限切れが近いトークンを更新できると記載がある。
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/msal-acquire-cache-tokens#acquiring-tokens-silently-from-the-cache
> また、期限切れが近いトークンを更新することもできます (トークン キャッシュには更新トークンも含まれるため)。

また、以下のページではトークンの

元記事を表示

【ionic】面倒臭がりでもできる、アラーム機能

時計やスケジュール張のアプリはもちろんですが、漫画アプリやコミュニケーションツールなどなど。通知機能はいろんなスマホアプリで活用されています。

今回はその中のアラーム通知をスマホアプリで実装する方法を「[ionic](https://ionicframework.com/jp/docs/intro)」というフレームワークを用いて紹介させていただきたいと思います。

# アラーム設定方法
基本的にはアラームの方法は2種類あります。

* プッシュ通知(リモート通知)
オンラインでの通知をすることができます。例えば、アプリ提供側から新着情報をユーザに提供したい場合はこれを使って通知を送ることができます。

* ローカル通知
プッシュ通知とは逆にオフラインの機能になります。ユーザが自分で時間を設定して、その時間に通知を受け取りたい場合に使えます。

一般的にアラームとなるとローカル通知をイメージされる方が多いと思います。今回はそのローカルでの通知を使ったアラーム機能を紹介します。

# ionic公式より
ionicの公式ページに[Local Notification](https://

元記事を表示

LinuxからAndroid(その逆も)へバックアップ

Alpineでも日本語入力Mozcが利用可能であることは確認できました。
現在は、Arch Linuxベースの[Manjaro Linux](https://manjaro.org/)(xfce)に落ち着いています。
グラフィカルなインストーラー)(Calamares?)でインストール先のパーティションも手動で選べます。
日本語環境も整えやすいです。

個人的にはブラウザのfirefoxがあれば、Webは一通り見れるし、動画も再生できる。Webメールのgmailも見れる。
Yahooのニュースのライブ動画もUser Agent Switcherのアドオン入れて、Windowsと同じですよ宣言しておけば、再生できます。

バックアップに使うアプリ(ソフトウェア)は、
syncthing
を選択しました。P2Pらしい。

無料のクラウドストレージには限度がある。クラウドまでは必要ない。アクセスするのは重たいし。
バックアップも無意識にLinuxとAndroidで同期(Sync)してくれたら、助かる。そういったニーズのアプリです。
私の場合には、スマホに取り付けたSDカードにバックアップでき

元記事を表示

RxJavaをAndroidのLifecycleを考慮していい感じに使いたい

RxJavaをAndroid上で扱うに当たって、LifecycleとかLiveDataとかと併せて使うと便利そうだよね。という何番煎じだか分からないネタです。

# Disposableをライフサイクルに合わせて自動的にdisposeしたい

AndroidでRxJava/RxKotlinを使う場合、以下のようにonDestoryなどでDisposableのdispose処理をしないといけないのが面倒ですね。

“`kotlin
hogeObserver
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({}, {})
.addTo(compositeDisposable)

override fun onDestroy() {
compositeDisposable.dispose()
}
“`

しかし、Lifecycle系の機能を使えば自動化できそうだよねーと誰もが考えるでしょう。
安直にはこんなところでしょうか?

元記事を表示

100均防犯ブザー+Atom lite+androidで着信通知デバイスを作る

# ご注意
本記事にはハードウェアの改造が含まれています。またソフトウェアの実装においてセキュリティーへの考慮はほとんどしていません。なので真似して作る際のリスクは各人の判断でお願いします。
ソースコードのライセンスはMITとします。

![PXL_20210122_072239759.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58150/b319e0c8-999e-0266-e5d2-2ff6e707afaa.jpeg)

# 動機
実家の父親いわく、母の耳が弱くなってスマホの着信に気づかないことが多くなって困っているとのこと。着信がわかりやすくなる機械ってないの?
# 調べてみた
有線電話なら
https://www.yodobashi.com/product/100000001002096313/
みたいな「リンガー」というものが割と昔からある。
しかしスマホでは1つしか見つけられなかった。

# ざっくり

元記事を表示

【Android / Kotlin】双方向 DataBinding + Clickイベント / サンプルアプリ実装

# はじめに
[こちら](https://qiita.com/tkmd35/items/ed2ae410e875aba165f7)の記事にて Java で同様のサンプルアプリを作成している。
今回はその Kotlin バージョンである。

## 双方向データバインディングとは(一方向との違い)

– 一方行データバインディング
– ViewModel などの中でデータを変更 → View に反映
– 双方向データバインディング
– ViewModel などの中でデータを変更 → View に反映
– ユーザが View でデータを変更 → ViewModel にデータの変更が反映(通知)

一方向が ViewModel などのロジックファイルから View 側への通知だけであるのに対し、
双方向ではユーザがアプリのフォームなどに値を入力したときなどに、ロジックファイルの方にも値の入力(変更)が通知される。と言うものである。

なお一方向データバインディングについては 言語はJavaですが[こちら](https://qiita.com/tkmd35/items/f5cc228

元記事を表示

Kotlin Multiplatform Mobileで作ったプロジェクトで実機ビルドができない場合の対応

# 概要
プラグイン`Kotlin Multiplatform Mobile`を利用してプロジェクトを作った際、実機ビルドができないとなった時の対応。

– [Kotlin Multiplatform Mobile](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile)

エラー内容としては下記。

“`
${Path}/iosApp.xcodeproj Building for iOS Simulator, but the linked and embedded framework ‘shared.framework’ was built for iOS.
“`

# 原因
AndroidとiOS側で共有されている’shared.framework’がiOS Simulator用にビルドされていて、実機では使えないという話。

FWは以下のような処理を経て生成される。
具体的にはConfigurationを基に各ターゲット向けに生成されたFWをコピーし、`xcode-frameworks`

元記事を表示

【iOS/Android】ネイティブアプリ開発をしたい人への上達マップ【初心者】

## 想定読者:これからネイティブアプリを開発したい人
想定読者に向けて、上達の全体像をお伝えします。
新人や駆け出しエンジニアの方が自分がどのあたりにいるか把握でき
モチベーションアップになれば幸いです。

## まずは入門書の前半くらい
画面のレイアウトを作れるようになる
数字や文字列を表示できるようになる
ボタンを作る
ボタンを押したら、数字が増えたり減ったりするカウンターを作れるようになる
画面遷移ができるようになる
画面遷移の時に値を渡せるようになる

## 入門書の後半くらい
値を保存できるようになる。
値を呼び出せるようになる。
データベースにデータを保存できるようになる。
データベースからデータを読み出せるようになる。

色や動きなどを実装できるようになる

## 結構大変になってくる
通信処理ができるようになる
エラーハンドリングができるようになる

## お、そろそろ実務の駆け出しくらいには行けるか?
綺麗にレイアウトを組めるようになる
(AutoLayoutなど)
デザインガイドラインを理解する
非同期通信ができるようになる

アプリの審査に提出できる
権限周りが

元記事を表示

DIライブラリ「Hilt」のセットアップ&使い方(Kotlin)

## はじめに

本記事は [Swift/Kotlin愛好会 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/love_swift_kotlin) の21日目の記事です。
空いているので埋めました。

Hiltのセットアップ方法と使い方を紹介します。

## 「Hilt」とは?

Android向けのDIライブラリです。

Daggerの上に構築されており、DaggerコンポーネントやAndroidクラスを自動的に注入するコードを生成するため、Daggerを使うよりボイラープレートが減ります。

## 環境

– OS:macOS Big Sur 11.1
– Android Studio:4.1.2
– Kotlin:1.4.10
– Gradle:6.8
– Gradle plugin:4.1.2
– Hilt:2.31-alpha

## セットアップ

### kaptのセットアップ

Hiltはアノテーションを使ってコードを生成するため、kaptが必要です。
以下の記事を参考にセットアップしてください。

元記事を表示

【Android / Kotlin】プロジェクトでアノテーション(@)を使えるようにする

# はじめに
Kotlin でデータバインディングを使うために、**kapt** の導入が必要であることを知った。
具体的に言うと自分の場合は
“@get:Bindable ~“と言う記述をしても“BRクラス“に監視変数が生成されずにつまずきました。調べた結果 **kapt** の導入に行き着きました。

# なぜ必要なのか
**kapt** とは kotlin-annotation-processing-tools の略であり、Kotlin プロジェクトでもアノテーション(@)を使い自動コード生成ができるようにするもの。
つまり、Dagger や DataBinding などを利用する際に導入が必要となるようである。

# 環境
– Android Studio: 4.1.1
– Build #AI-201.8743.12.41.6953283, built on November 5, 2020
– Runtime version: 1.8.0_242-release-1644-b3-6915495 x86_64
– VM: OpenJDK 64-Bit Server VM

元記事を表示

DialogFragmentの背景色を透明 or 指定する

## やりたい事

マテリアルデザイン化したDialogFragmentの背景のグレー(スクリム)を透明 or 色を指定したい

スクリムとは何か?はMaterial Designガイドラインで説明されている
https://material.io/components/dialogs#anatomy

## 完成形

## 実装コード

やり方は style.xml or コードの2通りがある。

### style パターン

“`xml:style.xml

<

元記事を表示

Gradleプラグインを適用するスマートな書き方

`app/build.gradle`

“`groovy:before
apply plugin: ‘com.android.application’
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-android-extensions’
“`

“`groovy:after
plugins {
id ‘com.android.application’
id ‘kotlin-android’
id ‘kotlin-android-extensions’
}
“`

## 参考リンク

– [Using Gradle Plugins](https://docs.gradle.org/current/userguide/plugins.html)

元記事を表示

Googleマップのナビ音声を茜ちゃんに変える

## デモ

アカネチャンカワイイヤッター

そんな高度なことはしてないですが、
ブログとか持ってなくて、他に書く場所もないのでここに書かせてください。

## ひつようなもの

* Android端末
* Andorid Google Map アプリ
* Andoroid ナビボイスチェンジャー アプリ
* https://play.google.com/store/apps/details?id=jp.nekoteki.android.navivoicechanger&hl=ja&gl=US
* PC (Windows)
* PC ZIP圧縮ソフト(WinRARなど)
* Android PC データ転送用ケーブル
* **【重要】茜ちゃんのめっちゃかわいい音声ファイル一式**
* (ナビボイスチェンジャーでDLします)

OPPO Reno 10X Zoom (Android 10)
Google Map Ver.10.58.2 で動作確認済です
iPhoneとかでも同じ方法でできると思いますが、動作未確認です

#

元記事を表示

Flutterとはなんぞや。〜html、cssを見たくないけどモダンなUI組みたいあなたへ〜

お久しぶりです!やびーくでっす! :sunny:
本日は、FlutterでiOSとAndroidのアプリを開発する方法についてお話しします!

# 目次
+ Flutterとは
+ プログラムの一元管理
+ HTML、CSSを意識しないモダンなUI構築
+ 豊富なライブラリとホットリロード
+ 実際に体験したい方へ
+ 開発チームメンバーの声
+ 参照記事

# Flutterとは

FlutterはiOSとAndroid両方で動作するスマホアプリを作成するためのDart言語のフレームワークです!

一部ハードウェアに依存するコードはそれぞれjavaやobject-cなどで記載する必要がありますが、
プログラムで共通化できる部分は共通化することができるので、iOSとAndroid両方のアプリケーションを作る場合のプログラムソースをほとんど一元化することができます。

## プログラムの一元管理

画像を元に説明します。
※あくまで触ってみて感じたイメージなので参考までに!
![ 2021-01-12 19.31.38.png](ht

元記事を表示

【Android / Java】双方向 DataBinding + Clickイベント / サンプルアプリ実装

# はじめに
実務案件で DataBinding を利用している。
なかなか難しい。そこで双方向 DataBinding を用いたサンプルアプリを作成しながら DataBinding について学んだ。

※ 今回は Java ですが、 ~~Kotlin でも同様のものを作成してみようと思っております。その時は改めて投稿します~~。
Kotlin バージョンも作成して記事にしましたのでご覧いただければ幸いです!!↓↓
[【Android / Kotlin】双方向 DataBinding + Clickイベント / サンプルアプリ実装](https://qiita.com/tkmd35/items/516283b4e43fd5ff7a7c)

## 双方向データバインディングとは(一方向との違い)

– 一方行データバインディング
– ViewModel などの中でデータを変更 → View に反映
– 双方向データバインディング
– ViewModel などの中でデータを変更 → View に反映
– ユーザが View でデータを変更 → ViewModel にデータの変

元記事を表示

【Android】ソフトウェアキーボードで悩むときにみる記事【EditText】

# EditTextがソフトウェアキーボードで隠れるのを防ぎたい

これを使えば一発で解決するかもしれません!

android:windowSoftInputMode=”adjustPan
android:windowSoftInputMode=”adjustResize|stateAlwaysHidden”

公式です
[入力方法の表示の処理  |  Android デベロッパー  |  Android Developers](https://developer.android.com/training/keyboard-input/visibility?hl=ja)

いい感じの記事です
[EditTextに入力中の文字がソフトキーボードで隠れるのを防ぎたい | by Keisuke Kawajiri | URL Memo | Medium](https://medium.com/url-memo/edittext-hidden-by-softkeybord-5406484db3ec)

オーバーフローでも同じようなことが書かれてます!
[resize – android:w

元記事を表示

【Android】加速度センサーの情報を表示する方法

#プログラミング勉強日記
2021年1月22日
加速度センサーの制度や種類、バージョンなどいろいろな情報を表示する方法を示す。

#Sensorクラス(センサーAPI)
 Androidでは、センサーによって変換された電気信号を取得するためのセンサーAPIが提供されている。そのうちのSensorでは、各センサーに関する情報を管理する。Sensorクラスのメソッドを使って、各センサーに関する情報を取り出すことができる。

“`java:Sensorクラスのメソッド
// センサーが検出できる最大値を取得するメソッド
getMaximumRange()
// センサーの名前を取得するメソッド
getName()
// センサーからの電気信号をmAで取得するメソッド
getPower()
// センサーの精度を取得するメソッド
getResolution()
// センサーの種類を取得するメソッド
getType()
// センサーのベンダー名を取得するメソッド
getVendor()
// センサーのバージョンを取得するメソッド
getVersion()
“`

#サン

元記事を表示

HitTestを実施した際に、Containerが反応しない

# 問題

テスト環境でHitTestにてContainerを検出することを確認後、本番環境に実装を行った。
が、なぜかContainerがHitTestにて検出されない問題が発生した。

# 解決方法

Containerのcolorに透明な色を適用することで、HitTestにて検出されるようになった。

# 原因

Flutter.devのContainerのページにも記載があったが、colorに何もしていない場合、ContainerはHitTestにて検出されなくなってしまうみたい。

> By default, containers return false for all hit tests. If the color property is specified, the hit testing is handled by ColoredBox, which always returns true. If the decoration or foregroundDecoration properties are specified, hit testing is handle

元記事を表示

Androidのログ出力ライブラリ”Timber”

どうも”おもり”です。

今年はOSS活動に精を出していこうと考えています。
Android開発のOSS活動。力不足の自分でもやっていけそうなissueを探している中、
以下のようなissueを見つけた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276053/740e7726-d41d-ab53-11ff-20d8c9a3246a.png)

[https://github.com/uhooi/UhooiPicBook-Android](https://github.com/uhooi/UhooiPicBook-Android)より

“good first issue”のタグが付いているので、いざやってみようと思ったのですが、
Timberとは何ぞや状態だったので、色々ネットを調べあさりました。
調べた情報をまとめて、Timberの良いところをサクッと学べるような記事を書きます。

# Timberとは?

Timberとは、Androidのログ出力ライブラリです。

And

元記事を表示

Android11から地味に変わったパーミッション

# パーミッション is 何
Androidアプリはアクセスが制限されたサンドボックス内で実行されるため、アプリの外部にあるリソースや情報を使用する必要がある場合には、権限をリクエストする必要があります。この権限がパーミッションです。

Android5.1(APIレベル22)以前は、アプリのインストールと共に必要なパーミッションがアプリに付与されるため、特に権限のリクエストをする必要がありませんでした。

しかし、Android6.0(APIレベル23)以降からはガラッと変わり、パーミッションが必要なタイミングでユーザにリクエストをしなければいけなくなりました。例えば、現在地を取得する時に、端末に「位置情報の利用を許可しますか?」みたいな画面が出てくるようになりました。

# Android11からまた変わったパーミッション
Android11(APIレベル30)から、アプリが

– 位置情報
– カメラ
– マイク

に関するパーミッションをリクエストするたびに、「今回のみ」というオプションが表示されるようになりました。
ちなみに、iOSでは実はiOS13(正式公開日が2019/9

元記事を表示

OTHERカテゴリの最新記事