Android関連のことを調べてみた

Android関連のことを調べてみた

ローカルプッシュ通知の備忘録

# はじめに

業務中にビジネスチームから
「ローカルプッシュ通知だとアプリがキルされていてもプッシュ通知って届くんだっけ?」
「ローカルプッシュ通知を使いたいのだけど、リモートプッシュ通知と比べて制約やデメリットはあるか?」
「ローカルプッシュ通知を使ってもこれって実現できる?」

みたいな雑な質問を受けることはないでしょうか?
これらの質問に対して、毎回調査したり時には検証アプリを作ったりするのですが、
毎回1から調べるとしんどいので、これは主に自分向けのメモ・ナレッジになります。

# 調査・検証メモ

### ローカルプッシュ通知だとアプリがキルされていてもプッシュ通知って届くんだっけ?

結論:「届く」

iOS: iOS16以上あたりなら特に労せずいけそう。サンプルコードに忠実に書けばいける。

この辺りのパラメータの設定は必要。
“`
presentAlert: true,
presentBadge: true,
presentBanner: true,
presentSound: true,
“`

android: WorkManagerなどのコンポーネントを使う

元記事を表示

Android開発の始め方

## 記事を書くきっかけ
最近仕事で新言語を触れることが多く、swift、golang、kotlinとやってきて今はAndroid開発をしています。これらの言語は社内ナレッジがない状態から開発を始めました。これまでの開発から次新言語で始めるとき、または0からプロジェクトをやるときに、こう始めるな〜というのが自分の中にでき始めたので、書こうと思いました。

## 公式ドキュメントを読む、軽く触る
公式ドキュメントを読むことで新言語(今回で言えばKotlin)の概要が把握できます。例えばAndroid開発では、Jetpack Composeを知りました。
それから軽くチュートリアルをして慣れます。
公式:https://developer.android.com/?hl=ja
Jetpack Compose:https://developer.android.com/jetpack/compose?hl=ja

## アーキテクチャ・ディレクトリ構造を決める
色々調べまくってアーキテクチャを決めます。
特にAndroidは公式のドキュメントや参考ようのレポジトリを多く用意してくださっている

元記事を表示

続・Unity でスクリーンセーバーを作る方法を模索してみた

あらすじ
========

去年のアドベントカレンダーにて [Unity でスクリーンセーバーを作る方法を模索してみた](/tkooler_lufar/items/c5bdf1b2793ba0b390d9)ところ、Windows と Android で大まかな手順が見えてきました。

動かしてみると粗が目立つコードでしたが、あの後さらに整えたので、記録に残します。

更新情報
========

Windows
——-

Windows 版を作る際は [ExternalPrograms\\Windows\\UnityScreenSaverLauncher\\UnityScreenSaverLauncher\\Program.cs](https://github.com/TkoolerLufar/UnityScreenSaver/blob/main/ExternalPrograms%2FWindows%2FUnityScreenSaverLauncher%2FUnityScreenSaverLauncher%2FProgram.cs) のレジストリ操作の行を適宜書き換える必要が

元記事を表示

Bluetoothで家の中の携帯を見つけてみた

## はじめに
皆さんにこんな経験はありませんか??

**家の中なのに携帯がない!!**

自分はよく家の中で携帯を無くします。大抵30秒くらい探せば見つかるのですが、特には全く見つからない時もあり、切羽詰まっている時だと心の具合が悪いです。

部屋を整理整頓する!置き場所を決める!という古典的かつ最も有効な手法は一旦無視して、携帯を無くした時用の携帯捜索システムを作ってみました。

:::note warn
「iPhoneを探す」については、筆者の自宅の環境では中々使用できないので番外編で記載します。
:::

## 携帯捜索システムについて
今回は携帯のBluetoothの信号強度から位置(距離)を推定、携帯を探してみます。
イメージ図にすると以下です。

![ 2024-01-31 1.46.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487820/f67398d3-b5bf-0c93-87b8-30f0ab22ca7c.png)

次に上記を達成するための具体的なステップは以下です

元記事を表示

【Android】独自アプリで Youtube の プレイリストをバックグラウンドで再生する

今回は、`android-youtube-player`を使用して、バックグラウンドでプレイリストを再生する Android アプリが作成できたため、実装方法の要点を書き記しておこうと思います。
`android-youtube-player`のライブラリは、以下のリンクで、`README`を翻訳すれば、この記事に書かれていることは、ほぼそのまま書かれています。

https://github.com/PierfrancescoSoffritti/android-youtube-player

要点は良いから、アプリをくれよ!という人は、以下の`Github`にコードを上げたので、`Android Studio` でデバッグ実行すれば、インストールできます!

https://github.com/NagaJun1/AndroidYoutubeBackgroundPlayer

`Google Play Store` での配信は、規約に違反するので、無理ですね!
多分、すぐ削除されます。

## build.gradle
以下追加で、インストール

“`build.gradle
de

元記事を表示

Android GoolePlayのinAppReviewがエンタープライズアカウントだとテストできない

### 事象
+ GoolePlayのinAppReviewで内部テストができない

### 原因
+ 内部テストで利用していたアカウントが原因
+ 下記公開ドキュメントのトラブルシューティングに記載のある通り、エンタープライズなどで保護されているアカウントではアプリ内レビューをテストする事ができません
+ 普段内部テストに利用するアカウントは会社で発行したアカウントなので、この制限に引っかかっていた.

https://developer.android.com/guide/playcore/in-app-review/test?hl=ja

:::note warn
担当者曰く、エラーログに該当の制限に引っかかった旨も出力されないので、何が原因かログからは判別がつかない。
:::

### 解決策

+ 内部テストに利用するアカウントを会社アカウントから個人アカウントに切り替えてテストを実施
+ 内部テストグループに登録する必要があるので、グループ管理をしている方とは応相談

元記事を表示

AndroidでのMQTTのTLS/SSLによる認証ガイダンス

# AndroidでのMQTTのTLS/SSLによる認証についてのステップ・バイ・ステップ・ガイド

![AndroidでのMQTTのTLS/SSLによる認証についてのステップ・バイ・ステップ・ガイド](https://assets.emqx.com/images/fc83ede6d17442ed06a074f078db008a.png?imageMogr2/thumbnail/1520×684)

[MQTT](https://en.wikipedia.org/wiki/MQTT)は、IoTデバイス開発者のために柔軟性とハードウェア/ネットワークリソースのバランスを取ることを目的とした、軽量かつ柔軟なIoTメッセージ交換とデータ転送プロトコルです。安全な通信を確保するために、通信暗号化にTLS/SSLがよく利用されます。

この記事では、主にAndroidとMQTTを用いてTLS/SSLの一方向および双方向認証を行う方法について説明します。

### 準備

この記事では、[Eclipse Paho Android Service](https://github.com/eclip

元記事を表示

Flutterのurl_lanucherとuni_linksでOAuth

[この記事](https://qiita.com/meique/items/c1933247803d92829020)の補足記事になります。

認証部分は読んだ前提で話を進めるので、読んでください!

webviewを使ったGoogleのOAuthがセキュリティ的にちょっとアレなため、url_launcherとuni_linksを使用した正攻法(?)で実装してみます。

サンプルのリポジトリは同じです。
https://github.com/Taichiro-S/notion_sample

## 使用するFlutterパッケージ

– [url_launcher](https://pub.dev/packages/url_launcher) : 端末のデフォルトブラウザでWebページを開く
– [uni_links](https://pub.dev/packages/uni_links) : deeplinkするやつ

## 実装

修正箇所は以下の2点です。

1. **「連携」ボタンクリック時にnotionの認証ページをurl_launcherで開くようにする**
2. **un

元記事を表示

FlutterアプリをNotionと連携する

[Notion](https://www.notion.so/ja-jp)は史上最高の万能アプリなわけですが(異論は認める)、Flutterアプリ連携しちゃお〜ってやってたら案外苦労しました。というお話。

サンプルのリポジトリ公開しています!
https://github.com/Taichiro-S/notion_sample

## 前提

– notionアカウント作成済み
– flutterアプリ作成済み(fvmを使っているなら[これ](https://qiita.com/kilalabu/items/7ed07a99024e1687a8f4)が早いです)
– OAuthの仕組みなんとなくわかる([この記事](https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be)がわかりやすいかも)

## 実装する機能

FlutterアプリからNotionアカウントを連携し、Databaseにデータを書き込む

### 動作イメージ

※動画はiOS simulatorですが、androidでも同じように動作します。

元記事を表示

[Android]TextWatcherでオートセーブを実装する

今回実装してみるのはiPhoneのリマインダーのようなアプリケーションです。TextWatcherを使用することで簡単に実装できます。

初学者なのでアドバイスあれば是非お願いします!!

## 今回実装したもの
![ezgif-4-6a062b776c.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686052/94a17c5e-fb4d-46a1-1270-bd0455206372.gif)

上記のgifの通りEditTextが表示され入力するごとにDBに保存処理がされます。
今回の記事では省略していますがラジオボタンを押すと本家のように2秒後に削除されます。下にソースコードのリンク貼ってあるので気になる方はチェックして見て下さい!

#### 全体のソースコードはこちら

## TextWatcherとは
簡単にいうとテキストが変更を監視するインターフェースです。

## 実装方法
Edit

元記事を表示

[androidアプリ]AWSのAPIgateway + Cognito Userpoolを使用してみる

## はじめに
Cognito認証を使用した各種サービスへのアクセスに非常に困惑したので備忘録として情報を記載する
特にAWSMobileClientの仕様が理解できておらず困惑したので書き留めておく.

## 何をするか
android環境で,APIgatewayに3つの状況でリクエストを送信する.
– 1.認証・認可なしの場合
– [前回の記事はこちら](https://qiita.com/sanjolin_chun/items/832fb1c6edfb3ea10ed5)
– 2.AWS cognito userpoolを使用する
– 3.AWS cognito userpool + idpoolを使用する
– 未出稿

本記事では,2のcognito userpoolを使用する場合について解説する.
前提条件として,1の認証・認可なしの場合のセットアップが完了している前提で記述する.

## 環境
各種jdkのバージョンや,ライブラリのバージョンは前回の記事と同じ.

minSdkVersion 28
targetSdkVersion 34
sourceCompa

元記事を表示

Android ストレージ内の暗号化済みSQLiteをDBeaverで接続する

私がAndroidStudioでAndroidアプリの開発を行っているとき、SQLiteを使っていてデータの内容を確認できないのかなと思い、[こちら](https://gist.github.com/thecodingcod/a3987ddde8892d1a6bda8bd94febb7d0)(←リンク)を参考にしてDBeaver(DB管理ツール)にデータの内容を表示することができたので備忘録としてまとめておきます。

* SQLiteとは
ざっくり説明するとSQLiteはAndroidのSDKが標準サポートしているデータベースです。詳しくは以下参照。

https://gihyo.jp/dev/serial/01/androidapp/0008

## DBのパスワードを取得できるか
後々に使うので一旦飛ばしてもいいですが、DBのパスワードを取得できないと後でつまずくので先に取得できるかを確認します。
開発環境によって違うとは思いますが、私はDatabaseオブジェクトを取得する部分をデバッグモードで止めてパスワードを確認しました。

## SqlCipherのドライバのライブラリをダ

元記事を表示

Android Studio で Geminiアプリ を作成して実機で動作確認してみる

## はじめに

Androidアプリの開発は、技術の進歩とともによりアクセスしやすくなっています。特にAndroid Studioは、開発者にとって非常に強力なツールです。この記事では、Android Studioを使用してGeminiアプリを作成し、実機での動作確認をする方法について、詳しく説明します。

大まかな流れはこちらの記事を参照してください。

https://note.com/npaka/n/n6fc43df9baf4

こちらの記事もおすすめ

https://hamaruki.com/llm-bot-gen-made-with-gpts-gas-and-gemini-pro/

https://hamaruki.com/automatic-generation-of-qa-database-using-gemini-api/

## スマートフォンを開発者モードに設定する
まず、スマートフォンを開発者モードに設定し、USBデバッグを有効にする必要があります。これは、Androidデバイスにアプリをインストールし、デバッグするための基本的なステップです。設

元記事を表示

FlutterでAndroidのSAFを使ってファイルにアクセスする

Androidストアに登録するアプリはAPIレベル33以上に対応することが必須となった。SAFに対応したファイルアクセスが義務付けられたということである。SAFは結構昔からある仕組みだけど面倒なので避けてきたのだが、もう逃げられないようだ。FlutterでSAFを使うにはどうすればいいのだろうか。

## Strage Access Framework (SAF)

SAFとは何か。ダウンロードしてきたスマホのアプリが、勝手に写真フォルダの中を漁って知らないサーバーにアップしたり、いろんな設定ファイルやデータを書き換えたりしたら大変なことになるが、Androidでスマホのアプリが勝手にファイルを読んだり書いたりするのを防ぐための仕組みが、Strage Access Framework 略してSAFである。

SAFは次のルールを守って安全にファイルを処理させようというものだ。
・基本的にアプリは自分専用の領域でしかファイルの読み書きができない。
・他アプリと共有するファイル、例えばカメラで撮った写真などにアクセスするには、ユーザーの許諾を得る必要がある。
・許諾を得たファイルも通

元記事を表示

【JetpackCompose】detectDragGesturesを用いてCanvasお絵描きUndo機能をサクッと作る

## はじめに

JetpackComposeでCanvasお絵描きUndo機能をわりと簡単に実装できるやり方がありましたので備忘がてら共有します。

特に`pointerInteropFilter`からMotionEventを取得して実装する手法は記事などでいくつか見かけるのですが、`detectDragGestures`を使ったやり方はあまり見かけない気がしたので、もし誰かの役に立てれば嬉しいです。

:::note warn
どちらのやり方が良いとか悪いとかの話ではありません。
こういうやり方もあるという話です。
:::

## キャプチャ

## ソースコード全文

“`kotlin
data class DrawLine(
val drawKey: Long,
val start: Of

元記事を表示

【AndroidView】RecyclerView から Groupi を使ってみる

# はじめに
今まで RecyclerView で実装していたことを Groupi で実装することがあったので、そのメモです。

# 導入
Groupy のリポジトリにある [Try it out](https://github.com/lisawray/groupie?tab=readme-ov-file#try-it-out) の通りに導入します。

Gradle に implementation を追加します。
“`gradle: build.gradle
dependencies {
implementation “com.github.lisawray.groupie:groupie:$groupie_version”
}
“`
次に、settings.gradleに `maven { url ‘https://jitpack.io’ }` を追加します。最新のプロジェクトではこれがないと動かないようです。(実際、自分も動きませんでした。)
“`diff_gradle: settings.gradle
dependencyResolutionManagement

元記事を表示

【Android】AndroidStudio HedgehogでDevice Explorerを表示する方法

# はじめに
Hedgehog、だいぶオシャレな感じのAndroidStudioになりましたよね。
ログなどの位置もこれまでと変わっており、違和感を感じる方も多いのではないでしょうか。
そんな中で今まではデフォルトで表示されていたDevice Explorerがデフォルト非表示になったようです。
今回はこのDevice Explorerをこれまで同様に表示する方法を備忘録的にまとめておこうと思います。

# Device Explorerの表示方法
アップデート後の表示は以下の状態になっています。

![スクリーンショット 2024-01-28 18.39.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/536e12ec-c756-4b92-c011-185591233a75.png)

見ての通り、Device Explorerは表示されていません。
AndroidStudioからデバイスにアクセスしディレクトリを操作できると便利な場面も多いと思いますので、表示するように調整します。

元記事を表示

【Android】Viewをドラッグして移動させる【Kotlin】

# はじめに
今回は Viewをドラッグして動かすアニメーションを色々触ったのでその一部をメモがわりに記事にしておこうと思います。
# 実践
サクッと 初期設定のHello World!を動かしていきます。
“`
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val textView: TextView = findViewById(R.id.text_view)

                // タッチする前のViewの位置を常に持っておきたいので、TouchListener外でインスタンス化
var oldPositionX = 0
var oldPositionY = 0

textView.setOnTouchListener { view, even

元記事を表示

DeepLinkの動作確認を簡単にする方法

# はじめに
今回はDeepLink実装の動作確認を簡単にする方法を紹介します
この記事を読む前に下記の記事を読んでおくとわかりやすいです
https://qiita.com/ryuji_sato/items/9e0906141f7ec36ff0ce
### 本文
上記の記事にあるリンクを開いた状態で端末を接続して適当なサイトを開くと下記のようにコードを見ることができます
ここで適当なボタンに対して書かれてるhrefに対して右クリックをすると`edit attributes`という項目があるのでそれを選択して試したいリンクを貼り付けることで簡単に動作確認をすることができます
![スクリーンショット 2024-01-28 17.43.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638092/0a56d350-1f46-b3a8-4aab-305420853e4e.png)

### 最後に
テキストリンク化でもいいのですが、実際にWeb上で動かさないといけない時などに役立つかと思います

元記事を表示

Jetpack Compose のプレビューが動かない状態に真剣に向き合う

# はじめに
Androidのモバイル開発では[Jetpack Compose](https://developer.android.com/jetpack/compose?hl=ja)が主流になってきていますが、その機能の1つに[プレビュー機能](https://developer.android.com/jetpack/compose/preview?hl=ja)があります。所謂ホットリロードって言われる機能ですが、UIを作る段階ではこの機能を活用すると効率よく開発できます。

しかし、この機能を使っているがいくつかのviewにおいてエラーとなり、プレビューが表示されないというプロジェクトに何度か出会ったのでその解決策を記します。これはリファクタリングにもつながることなので、是非直すことをお勧めします。

# 結論: ViewModelの依存先をmockにせよ
ViewModelやusecaseが、ネットワーク通信層あるいはデータベース層と接続しており、かつDIを使うことでこのエラーが発生することがほとんどです。
つまり、**プレビュー機能が依存関係を解決できない**ために発生しま

元記事を表示

OTHERカテゴリの最新記事