- 1. Android TWRP(Team Win Recovery Project)を起動しようとするとエラーが発生する
- 2. 【kotlin】flowで非同期処理やローディングをいい感じにやりたい
- 3. E/UncaughtException: java.lang.NoSuchMethodError: No virtual method load(Landroid/net/Uri;)Lcom/bumptech/glide/DrawableTypeRequest; in class の解決法
- 4. Duet Display Mac Androidタブレットの組み合わせで有線接続する
- 5. [Android]Activity Result APIを使って画像の選択、撮影機能を実装したい
- 6. Androidアプリが対応しているディープリングを簡単に確認できる方法
- 7. [Android]ConstraintLayoutを使って、画面内からはみ出さずにTextViewを改行させる
- 8. 【Android】Intentリンクを作成する
- 9. Unity2020でGradleビルドエラー
- 10. BitriseにContributeをする
- 11. AndroidStudio[Material Design]を導入
- 12. 【Android】EditTextのソフトウェアキーボードのボタンを変更する方法
- 13. [WIP]Android開発基礎
- 14. MSAL(Microsoft Authentication Library)を使用したSSOにおけるアクセストークンの有効期限について
- 15. 【ionic】面倒臭がりでもできる、アラーム機能
- 16. LinuxからAndroid(その逆も)へバックアップ
- 17. RxJavaをAndroidのLifecycleを考慮していい感じに使いたい
- 18. 100均防犯ブザー+Atom lite+androidで着信通知デバイスを作る
- 19. 【Android / Kotlin】双方向 DataBinding + Clickイベント / サンプルアプリ実装
- 20. Kotlin Multiplatform Mobileで作ったプロジェクトで実機ビルドができない場合の対応
Android TWRP(Team Win Recovery Project)を起動しようとするとエラーが発生する
# 目的
– Android TWRP(Team Win Recovery Project)を起動しようとするとエラーが発生する問題を解決したときのメモをまとめる
# 情報
– 筆者のAndroidタブレットはNexus7である。
# 問題発生までの経緯
– 下記方法を参考にカスタムリカバリTWRPをインストールした。
– [https://docs.google.com/presentation/d/1R4579XdRbk09mISQSJb3VUzE40RbtzPTDbS6tLEKF5U/edit#slide=id.g404823a961_0_124](https://docs.google.com/presentation/d/1R4579XdRbk09mISQSJb3VUzE40RbtzPTDbS6tLEKF5U/edit#slide=id.g404823a961_0_124)# 問題
– 下記のような文字列が出力されてリブートを繰り返す
“`
Could not mount /data and unable to find crypto footer
【kotlin】flowで非同期処理やローディングをいい感じにやりたい
# はじめに
本記事は主に初心者向けの記事になります。-> Androidで非同期処理するにはコルーチンを使えばいいみたい。
-> 最近はflow, channelが熱いとか。
-> 基本的な使い方はわかったけど実際どんな感じで使えばいい?って感じの方向けです。(自分の備忘録も兼ねてます)
#今回やること
以下の動作をする機能を実装します。– APIリクエストを投げる
– レスポンスが返ってくるまでローディングを表示
– APIリクエストエラーハンドリング#実装
成功、失敗、ローディングなどの状態を管理するために、リクエストのresultなどをラッピングするクラスを作って定義します。
“`kotlin
sealed class State{
class Loading: State () // ローディング中
data class Success(val data: T) : State () // 成功時
data class Failure(val e: Throwable) : State (
E/UncaughtException: java.lang.NoSuchMethodError: No virtual method load(Landroid/net/Uri;)Lcom/bumptech/glide/DrawableTypeRequest; in class の解決法
##エラー文
E/UncaughtException: java.lang.NoSuchMethodError: No virtual method load(Landroid/net/Uri;)Lcom/bumptech/glide/DrawableTypeRequest; in class Lcom/bumptech/glide/RequestManager; or its super classes (declaration of ‘com.bumptech.glide.RequestManager’ appears in /data/app/myapp/base.apk)##解決法
glideの依存関係を削除すること。例)
implementation ‘com.github.bumptech.glide:glide:4.9.0’##参考記事
https://github.com/bumptech/glide/issues/3539
Duet Display Mac Androidタブレットの組み合わせで有線接続する
# 目的
– Duet DisplayのアプリをMacとAndrodiタブレットの組み合わせで有線接続する方法をまとめる。
# 環境
– PC
| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |– Androidタブレット
| 項目 | 情報 |
| — | — |
| OS | Android 7.1.2 |
| ハードウェア | Nexus7(2013) |# 方法
1. Mac側の作業
1. 一度MacでDuet Displayのアプリを起動しサイドバーの「その他」の中にある「設定」をクリックする。
[Android]Activity Result APIを使って画像の選択、撮影機能を実装したい
#概要
Androidのアプリを開発していると、ユーザーに画像をセットさせるというコードをActivity Result APIを使って組もうとしたらやけに時間がかかってしまったので戒めとしてメモを残しておこうと思います。#Activity Result APIについて
今までは、画面遷移をして、結果をもらってくる・・・という処理を書く際にはstartActivityForResultを使用していたと思います。しかし現在、startActivityForResultはDeprecatedになっています。その代わりにActivity Result APIを使用することが推奨されています。これを使うことで結構簡潔に書けるようになるようです。~~まさかstartActivityForResultを使ったことがないなんて言え(ry~~つまり、今回はActivity Result APIを用いて、Androidに元から入っている
Androidアプリが対応しているディープリングを簡単に確認できる方法
# 事柄の背景
ネット上でディープリングについて調べてみたら、実装方法とディープリングについての解説の記事が圧倒的に多く、端末にインストール済みのアプリがどのディープリングに対応しているかを調べる方法の記事がほぼ皆無で、あってもその調べ方が難しすぎて、汎用性が乏しいです。そのため、Androidアプリが対応しているディープリングを簡単に確認できる方法の記事を書こうと思います。
# 確認方法
確認方法は非常に簡単です。まず、端末の
[設定] -> [アプリ] -> 調べたいアプリ
を開きます。そこに[既定で開く]項目が表示されます。
[既定で開く]項目を選ぶと、アプリリンクという項目が表示されます。
[Android]ConstraintLayoutを使って、画面内からはみ出さずにTextViewを改行させる
## はじめに
この記事では[ConstraintLayout](https://developer.android.com/training/constraint-layout)とそのヘルパーウィジェットである[flow](https://developer.android.com/reference/androidx/constraintlayout/helper/widget/Flow)を使って、下記の図のようなタイトルの長さに合わせて、画面から右端のコンポーネントがはみ出さないように中央のTextViewを改行させるレイアウトを作成するのに色々てこずったので紹介します
![簡易説明.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82263/d613ecdd-542b-0de5-1dc7-08afffbab1c2.jpeg)## flowを使って並べる
### flowとは
ConstraintLayoutのflowとはConstraintLayout内のViewの整列に便利なヘル
【Android】Intentリンクを作成する
## はじめに
前回はターミナルからadbコマンドでアプリを開いてみた。[前回記事](https://qiita.com/kilalabu/items/7b84694d542250259e78)
今回はリンクをタップするとアプリが開く実装をする。
![book.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/fed0f58f-6ca0-5492-6c79-49cf6b79aef5.gif)## インテントリンクについて
Androidではインテントリンクを使うとWebページから直接アプリを起動できる。
また、タップした時点でアプリがインストールされてなければPlayStoreに遷移することも可能。### 構文
インテントリンクを作成するには以下の構文に沿って作成する必要がある。
※ 全て設定する必要はない。“`
intent:
HOST/URI-path
#Intent;
package=\[string\];
action=\
Unity2020でGradleビルドエラー
# ことの発端
ずっとUnity2019(1.5f1)でアプリを開発していたので、新規のアプリでUnity2020(2.1f1)を使ってみたくなった。Android向けにビルドしたところ、`CommandInvokationFailure: Gradle build failed.`とやらが出てビルドが成功しない。ビルド時に複数エラーが出ていたが、主なのは下の2つ。
“`
FAILURE: Build failed with an exception.* What went wrong:
Execution failed for task ‘:launcher:processReleaseResources’.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Android resource linking failed
“`“`
CommandInvokationFailure: Gradle build f
BitriseにContributeをする
# BitriseにContribute
「[Get Info on Android App Bundle](https://www.bitrise.io/integrations/steps/get-info-on-android-app-bundle)」というIntegrationをBitriseにContributeしました。Android App Bundle(.aab)から情報を抽出できます。
![Get Info on Android App Bundle](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125724/eb4e429f-52e8-4ac9-2f6a-69a06c583716.png)# 背景
Bitriseでは、APKから情報を抽出するステップはいくつか公開されているものの、Android App Bundle(.aab)からパッケージ名やバージョンを抽出するワークフローステップが見当たらなかったため、自作のスクリプトを作成して抽出していました。
主にFirebase App Di
AndroidStudio[Material Design]を導入
<記録用>
AndroidStudioへMaterialDesignを入れてみる。参考サイト
https://material.io/develop/android/docs/getting-started
【Android】EditTextのソフトウェアキーボードのボタンを変更する方法
# 想定読者
Android開発経験1年未満でUI作成を担当することになった方# ソフトウェアキーボードのボタンを変更する
“`
android:imeOptions=”actionSearch”
“`
とする虫眼鏡になります!では他にはどのようなボタンに変更されるでしょうか?
答えはここにあります![TextView | Android デベロッパー | Android Developers](https://developer.android.com/reference/android/widget/TextView?hl=ja#attr_android:imeOptions)
# まとめ
公式ドキュメント最高!
ただ、そこまでたどり着くのが難しいと思うのでこの記事を道しるべとしてください!
[WIP]Android開発基礎
## 1. はじめに
Android Studioで書籍管理アプリを作成しましたので、
その際に学んだ技術を備忘録として、残しておきます。
*正しくない内容も含まれているかもしれませんので、その際はご指摘頂きたく、お願いします。## 2.環境
MacOS Catalina 10.15.7
Android Studio 4.1.1## 3. 学んだこと一覧
1. 画面遷移(Activity, Fragment)
2. Action Bar関連
3. 背面タッチによるKeyBoardの収納
4. RecyclerView実装***
### 1. 画面遷移
画面の遷移と言うより、画面の呼び出しが正しい表現。– Activity呼び出し
“`kotlin:LoginActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)// signUpBtnをclickしてSignUpActivityを呼び出し。
//
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`