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

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

Android+RetrofitでHTTP通信するアプリの作り方(その1)

# Android+RetrofitでHTTP通信するアプリの作り方(その1)

通信しようと思った時、簡単なものならHTTP APIを自分で処理するのもアリだと思います。

ですが、少し複雑になるとバグが混入しがちだし、潜在的な不具合に怯えながら実装を進めるのは精神的に良くないです。

そこで、ライブラリの力を借りることにします。

今回はRetrofitの力を借りることにします。

## 目次
– [Android+RetrofitでHTTP通信するアプリの作り方(その1)](#androidretrofitでhttp通信するアプリの作り方その1)
– [目次](#目次)
– [記事を書く上で参考にした資料](#記事を書く上で参考にした資料)
– [Retrofitとは](#retrofitとは)
– [準備](#準備)
– [dependency](#dependency)
– [Manifest](#manifest)
– [JsonPlaceHolder](#jsonplaceholder)
– [実装](#実装)
– [d

元記事を表示

自用APK共有

クリエート
https://1drv.ms/u/s!Ao4uKeFwlXPntUnCM-ckQNYkAXiW

元記事を表示

Jetpack ComposeでBottomSheet実装時に気を付けたいこと

# 初めに
今回はJetpack ComposeでBottomSheetを実装するときに自分が詰まった部分を解説していこうと思います
### 本文
まず、自分が詰まったところというのはバック制御の部分です。
端末純正のバックボタンを押下されたときの挙動を制御したところ通常のComposableでは`BackHandler`を使えばいいのですが、それが機能しませんでした。
そこで詳しく調べてみたところ、Material3の`ModalBottomSheet`では現在バグでバック制御ができない状態になっており、最新のものをつかっても下記のようにすることでバック機能自体をなくすことしかできない状態にあります。
“`kotlin
ModalBottomSheet(

properties = ModalBottomSheetDefaults.properties(shouldDismissOnBackPress = /* ここにBool値を渡す */),

)
“`
そのため、現在ではAndroid純正のバックボタンを無視するかどうかの制御しかできない状態にあります

元記事を表示

家に着いたらリマインドしてもらう

今回は、Androidスマートフォンで、家に着いたら通知でリマインドしてくれるようにします。
例えば、会社にいるときに、次会社来るときに家から忘れずに持ってこようとして、忘れてしまうことがありますよね。
その時は覚えていても、家に着くとうっかり気づかずに次の日に普通に会社に行ってしまったりします。
そこで、会社にいるときに、家に着いたら教えてほしいメモを登録しておき、家に着いたらスマホ通知で知らせてくれるようにします。
私はスマホの通知をXiaomiのスマートウォッチにしているので、ぶるってくれるの気づけます。

家に着いたことを認識するのに、Pingを使いました。
LINEビーコンを使う方法もありますが、もう少し正確に判別したかったため、採用しませんでした。

ソースコードもろもろは以下にあります。

https://github.com/poruruba/ReminderNotification

## Androidに通知する

Androidの通知をするには、サーバを立ち上げておく必要があります。また、ネイティブアプリケーションを作成し、Androidスマートフォンにインストー

元記事を表示

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

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

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

本記事では,2のCognito UserpoolとIdpoolをセットアップして,IDフェデレーションする場合について解説する.
Amplifyは使用しない.また,前提条件として,[前回記事](http

元記事を表示

AndroidStudio MD5、SHA-1、SHA-256の簡単な取得方法

MD5、SHA-1、SHA-256が必要になるときは多くないので、必要になった時忘れていたりしました。

忘れた時に簡単に思い出せるように取得方法を残します。

AndroidStudioの右側のところからGradleを開きます。
![スクリーンショット 2024-02-24 14.34.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/b0c56489-8921-f046-b2cf-218929157657.png)

そして“Tasks -> signingReport“をクリックすると取得できます。
![スクリーンショット 2024-02-24 14.34.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/f8ff8662-572a-629f-0e46-6ed3aecdfa88.png)

以上です!

元記事を表示

React Native WebViewの基本的な機能とAPIの活用方法

## はじめに
ReactNativeでWebViewを扱う場面があったので、公式ドキュメントを参考に簡単な機能を理解していきます。以下の公式のAPI Referenceを参考に進めていきます。

### React Native WebView API Reference

https://github.com/react-native-webview/react-native-webview/blob/master/docs/Reference.md

## 内容

今回はこちらのライブラリーを使用します。

https://github.com/react-native-webview/react-native-webview

### インポート
“`js
import { WebView } from “react-native-webview”;
“`

### useRefを用いる
WebViewのAPIのメソッドを用いるためには、`useRef`を使用する必要があります。使用することによって、WebViewのAPIのメソッドの参照が可能となります。

“`js

元記事を表示

roborazziで取得したスクリーンショットをPRにて表示する

# はじめに
こんにちは、こんばんは、佐藤佑哉です。
本日は、Androidアプリ開発で使用されるRoborazziを用いて、画面の差分をPRのコメントに表示するをGitHubActionsで実現していきたいと思います。
## 本記事の動機
前回投稿したroborazziでのスクリーンショットの方なのですが、現状、スクリーンショットと差分レポートの生成のみになっており、実用性に欠けています。これをGitHub Actionsを使用して、実際に開発でも実用できるようにするのが本記事の動機です。

https://qiita.com/dao0203/items/f6f3633b8e8a0ce6c49d

## 使用する技術
本記事で使用するGitHub ActionsとRoborazziのみを使用します。

https://github.co.jp/features/actions

https://github.com/takahirom/roborazzi

## 前回の記事のまとめ
前回まで, roborazziを使用してVRTを行い、生成されたスクリーンショットや差分レポートを表示

元記事を表示

Jetpackのライブラリでグラフを実装してみた

## ライブラリで実装した経緯
今回グラフを私のアプリで初めて導入すると言うことでグラフの作成方法としてはフルスクラッチで作成するか、ライブラリで作成するか考えられますが以下の点でライブラリの方が優れているのではないかと言うことでライブラリ実装になりました。
– 棒グラフや折れ線グラフなどユーザーの反応を見て今後変えていきたい
– 結構機能が豊富グラフ上のタップ時の挙動特定の時に値を表示しないなど
– 案件の実装の手間を少しでも軽くしたい

## 実際に使ったライブラリ
AndroidのグラフライブラリはJetpackになってから公式のライブラリや有名ライブラリがあるわけではなかったのでgithubで一番星の数が多かった[vico](https://github.com/patrykandpatrick/vico)と言うライブラリを使いました。
vicoを選んだ理由
– 機能が豊富で今回の案件に対応できそうだったため幾つかのライブラリを見たが基本的に何かしらの機能が足りないことが多かった
– UIがJetpackなのでJetpackのライブラリを使いたかったしxmlのライブラリはメンテ

元記事を表示

【iOS】Skipを使ってみた

# はじめに
みなさん[Skip](https://skip.tools/)というツールはご存知でしょうか。
SwiftのコードをKotlinにトランスパイルして、Androidのアプリも同時に作れるツールです。
[Github](https://github.com/skiptools/skip)

この記事ではSkipの導入から簡単なアプリを作成し、iOS/Androidのシュミレーターでビルドするところまでをご紹介します。

:::note warn
注意
Skipをインストールしてから14日間の試用期間は無料です。
それ以降は有料になるらしいですが、まだ価格は発表されていません。
[価格ページ](https://skip.tools/pricing/)
[説明文](https://skip.tools/docs/lice

元記事を表示

日本語プログラミング言語MindをAndroidに移植した時の記録(ステップ2/9)

# はじめに

 この記事はだいぶ前(2012年)にココログの「[キリーの日本語プログラミング](http://uemon3511.cocolog-nifty.com/nihongoprogram/)」に掲載したコラムですが、再編集してこちらにも投稿します。今となっては古い話ではありますが、OSによってプログラム言語(AndroidではJava)が決め打ちされている環境で規定と異なるもの(Mind)を走らせたことの記録としてお読みください。

# AndroidでMindをどうやって動かすか(2)

 MindではMコードがオブジェクトコードの実体であるため、当然だがMコードファイル(.mco)の扱いが重要となる。
 しかし Android OS から見た狭義のプログラムは JavaのクラスファイルとC(JNI)の共有ライブラリの2つであり当然だがMコードは関与されない。そのためファイルの設置や読み出しは自前で行う必要がある。

## パッケージング

 まず設置については、パッケージ(.apk)の中にMコードファイルを含めておき、アプリ起動時にそれが自動展開されるのが良いのだが、調

元記事を表示

FlutterでReleaseビルドをするとネットが繋がらなくなる問題への対処法

# 起こっていること

https://github.com/gadgelogger/kokorahenn_flutter

ワイ「Flutter使ってこんなアプリ作ってるんやけど、そろそろ完成しそうやな」

ワイ「せや!release buildしてAndoridでチェックしたろ」

ビルドしてAPKで書き出し

「無事にビルドできたわ。。。。。うん???なんか店舗情報取得できねぇ。。。どうなってんだこれ???」

みたいな状況が発生した。

| 正常な時 | 今回の現象 |
|:-:|:-:|
| ![Screenshot_1708617694.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1657253/4008052d-f5ac-553b-94f8-8433fbd47015.png)| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1657253/61980595-f873-6362-736

元記事を表示

推移的依存関係をわかりやすくみよう

# 推移的依存関係とは
ライブラリの中でさらにライブラリが使われてたりしますよね。

例えばAというライブラリの中でv1.0.0のBというライブラリが使われていたとします。
gradleを通してAのバージョンをアップデートして、Bはv1.0.0のままにしていたとしても、
アプデ後のAの中でもしv1.2.0のBが使われている場合、アプリではv1.2.0のBが使用されます。

![20240222_205516.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/01c4ca30-4b3e-214a-080a-a8eacb18e4e9.jpeg)

そーゆー感じのことを推移的依存関係と言います。
「推移的」に関しては「つられてバージョンあがっちゃった💦」みたいに解釈してます。私は。

# どんなシチュエーションで知りたくなる
業務で何かしらのライブラリのバージョンをアップデートするときに、つられて上がっちゃう他のライブラリちゃんがないか調べておきたいですよね。

つられてあがっちゃったライブラリ

元記事を表示

MacでAndroid Flutterの環境構築

# 1.はじめに
MacでAndroid Flutterの環境構築したので、備忘録として残しています。

# 2.前提条件
Android Stdioがすでにインストールしている事。
Android Stdioのインストール手順、環境構築は割愛しています。

:::note alert
注意(2024.02.20時点)
Flutter(SDK、プラグイン)をインストール後、最新のAGP(8.2)にアップデートすると以下のメッセージが表示されFlutter(プラグイン)がインストール出来ないです。

Plugin ‘Dart’ (version ‘223.8977’) is not compatible with the current version of the IDE, because it requires build 223.* or older but the current build is AI-231.9392.1 Plugin ‘Flutter’ cannot be loaded because it depends on plug

[Setup] Appium 2.x + Robotframework + Windows

# Outline

これまで何度もappium , robotframeworkのsetupのドキュメントを書いてきた。
ただ、mac中心であった。今回、windows 環境で android (iOSをテストしたい場合、Macにすべし)のテストを簡単に行いたかったので、そのセットアップを残す

# install

## Java

Javaをinstallする

https://www.oracle.com/jp/java/technologies/downloads/#jdk21-windows

install後、pathを設定する

| 環境変数 | 設定値 |
|:———–|:————|
| JAVA_HOME | C:\Program Files\Java\jdk-21 |
| Path | %JAVA_HOME%\bin |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/42f6089e-722

GPT-4を使用できるAndroidアプリ

GPT-4は現在最も強力な大型モデルで、しかしOpenAIではPlus会員でなければGPT-4を使用することはできません。私たちは広告を通じて、誰でもGPT-4を使用できるように試みています。

アプリケーションは使いやすく、一つのダイアログボックスだけで、ネットワーク依存や任意の設定を必要とせず、開封すればすぐに使えます。

Google Playのアドレス:https://play.google.com/store/apps/details?id=me.app.free.gpt4

PendingIntentのフラグを理解してなかったせいで詰まった話

# 違い
公式のドキュメントのPendingIntent.FLAG_IMMUTABLEのところには次のように書かれてました。
> FLAG_IMMUTABLE only limits the ability to alter the semantics of the intent that is sent by send() by the invoker of send()

意味としては、
FLAG_IMMUTABLEを設定するとsend()の呼び出しによって送信されるインテントのセマンティクスを変更する機能のみを制限します。
という感じなので、インテントの情報を変更できないよという事になる。

[公式ページ](https://developer.android.com/reference/android/app/PendingIntent#FLAG_IMMUTABLE)

逆にMUTABLEの方は変更可能であると書かれているので、PendingIntent経由で何か情報を受け取りたい時はMUTABLEの設定すればよいと思われる。

# 具体例
NFCカードを読み取ろうとしている際に

Androidチームでインターンを取ってみた

## 組織とインターンの内容
私の所属するAndroidチームは私含めて社員4人に加え業務委託1人の5人チームの組織です。そこに長期のインターンとして3ヶ月〜というスパンで働いてらうという形で1人を採用しました。今まで2人のインターン生を受け入れたのでその記録を残します。

### インターン生の主な業務内容
– Androidを触れたことのないインターン生であればcodelabをやってもらいAndroidを学習してもらう
– 学習が終わり次第簡単な業務から振ってチケット作成からPRマージまでの流れを学んでもらう
– それ以降は基本的には我々と同じような仕事を振って対応してもらう
– 毎日誰かと1on1をしてもらい色々話してもらう

### 入ってくれた2人のインターン生のレベル
1. Kotlinに軽く触れたことがあるレベル
2. アプリを作ったことがあるし結構書ける

#### うちの技術スタック
Kotlinで書かれておりUIはほぼjetpackで書かれている、UsecaseなどはRxからFlowへの以降は完了しており、RipositoryもRetrofitに対応しているしマル

Jetpack ComposeでonResume/onStartに相当する処理を実行する

lifecycleのバージョン2.7.0以降で `LifecycleEventEffect`を使うことができます。

“`kotlin
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
// do something here
}
“`

“`kotlin
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
“`

onPause/onStopに相当する処理が必要な場合には、`LifecycleResumeEffect`もしくは`LifecycleStartEffect`を使いましょう。

“`kotlin
LifecycleResumeEffect {
// ON_RESUME code is executed here

onPauseOrDispose {
// do any needed clean up here
}
}
“`

“`kotlin
LifecycleStartEffect {

AndroidスマホにKDDI系SIMを入れたときに2重に表示されるキャリア表示を改善する

## はじめに
スマートフォンに通信キャリアのSIMを挿入すると、挿入したSIMのキャリア名が表示されるようになっていますが、一部のスマートフォンで一部の通信キャリアのSIMを挿入すると、キャリア名表示が二重に表示されてしまうことがあります。
特にGoogle PixelにKDDI系のSIMを入れると、auの場合は「KDDI – au」、UQ mobileの場合は「KDDI – UQ mobile」、povoの場合は「KDDI – povo」と表示され、キャリア表示が冗長的になってしまいます。

![Screenshot_20240220-110340.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715077/b5dd37fb-ac96-435e-cba6-392f84623b09.png)

本記事では、これをそれぞれ「au」「UQ mobile」「povo」の表示だけにする方法を解説します。

### ⚠︎注意
この記事ではAndroidのカスタムROMに関する事柄を記載しています。ご自身のスマ