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

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

【自分用メモ】「intent」は「Activity」間でしか使わない。

【上司から教わったことのメモ】

 「intent」は「Activity」間でしか使わない。

以降は追記あり次第更新。

元記事を表示

Truth 1.2.0で追加されたisWithin().of()の使い方メモ

# 概要

[Truth 1.2.0](https://github.com/google/truth/releases/tag/v1.2.0)で新しく`isWithin().of()`が追加されたので使い方のメモです。

例えば、あるメソッドが戻り値として期待される整数値に非常に近い値を返すかをテストしたい場合、`assertThat`メソッドを使って対象の値を指定し、`isWithin`メソッドで許容範囲を設定し、`of`メソッドで期待値を指定します。

ここで、`actualValue`はテスト対象の値、`tolerance`は許容される差の範囲、`expectedValue`は期待される値を指します。

“`kotlin
assertThat(actualValue).isWithin(tolerance).of(expectedValue)
“`

# 具体例

具体例だとこんな感じです。

“`kotlin
assertThat(20000).isWithin(0).of(20000) // OK 20000±0の範囲に期待される値が入る
assertThat(20

元記事を表示

Flutterでマイナンバーカードを読んでみた

## この記事について
この記事は [SUPER STUDIO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/superstudio) の20日目の記事になります。

## マイナンバーを読んでみたい
会社のアドカレなのに、弊社のプロダクトと関係ないものを作って投稿するのもどうかと思うのですが、マイナンバーカードからマイナンバーを読んでみたいのです。

そう、ほら、あれだ、たとえばいつか転売対策とかでマイナンバーによるユーザー認証が必要になっちゃったりしなかったり、ECカートだってそういう需要があるかもしれないじゃないですか。なんとかしてマイナンバーカードからマイナンバーを読んでみたいのです。

…だって、**男女のマイナンバーを足して素数になるカップルをマッチングするマッチングアプリ**を作ってみたいと思ってしまったからです。

## マイナンバーカードの仕様について
マイナンバーカードのようなICチップを積んでいるICカードは、演算機能を持ったコンピューターのようなもので、単純な読み取りでもきちんとしたプロ

元記事を表示

2023年、書き初め ならぬ アプリ書き出し初め のノリでアプリ作ってみた

## はじめに
こんにちは、@mediaboxesです。
久しぶりにReactNativeのAdvent Calendarに投稿します。

ReactNativeはTypeScriptでiOSとAndroidの両方のアプリを作れるという、エコな開発でサクッとアプリを作って両OSのアプリを作るれるので、新規事業の開発で重宝しています。
最近はマネージメント層として開発から離れていたので、学びのために休日開発をやってみたので総括として投稿します。

## 作ってみた
### なぜ作ったか
業務でReactNativeで開発が多いのですが、長期運用するとバージョンアップで大変苦労してきました。
+ 素のReactNativeをバージョンアップするとネイティブプロジェクトが無限パズル
+ ExpoのManaged workflowでネイティブプロジェクトを考えなくて楽だが、やりたいことが出来ないことがよくある
+ ExpoのBare workflowで結局ネイティブプロジェクトを管理しなければいけない

しかし、Expo SDK 42で発表されたexpo-dev-clientを使うことで、Ma

元記事を表示

Android Graphics Shading Languageって何?

この記事はレコチョク [Advent Calendar 2023](https://qiita.com/advent-calendar/2023/recochoku) の20日目の記事です。

https://qiita.com/advent-calendar/2023/recochoku

# はじめに
レコチョクでAndroidアプリ開発をしている寺島です。

アニメーションと一緒に聴く音楽が好きです。
手書きアニメーション風のMVを観るのが最近のマイブームです。

本記事では、Android Graphics Shading Language(以下、AGSLと略します)について記事を書きます。

Android OSは、年に1度バージョンが新しくなります。それに合わせてAndroidアプリの開発者は、targetSDKを最新にする対応をします。[こちら](https://support.google.com/googleplay/android-developer/answer/11926878?hl=ja)の内容にあるように、アプリをリリースし続けるためにはAPI更新が開発者の

元記事を表示

Compose Multiplatformで作ったQiitaリーダーにさらに機能を追加した

この記事はNTTテクノクロス [Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ntt-tx) シリーズ2の20日目です。

こんにちは、NTTテクノクロスの戸部@etctaroと申します。

普段は社内でモバイルアプリ開発関連の技術支援や社内向けのノウハウ記事執筆、社内研修講師活動、社内コミュニティ活動などを行なっています。

今年はすでに[シリーズ1の2日目の記事](https://qiita.com/etctaro/items/5f142b0661e761756b36)を書いています。
この記事はその続きとなります。

Compose Multiplatformでちょっと気になるあれこれも色々とやりましたので、
ぜひこちらもお楽しみください。

# はじめに
[シリーズ1の2日目の記事](https://qiita.com/etctaro/items/5f142b0661e761756b36)のダイジェスト

– Compose Multiplatformの環境が整ってきたよ。
– いつものQiitaリーダ

元記事を表示

ChatGPTに頼りながらFlutterでメモアプリを自作してみた

僕は普段スマホのメモアプリには[Keep メモ](https://play.google.com/store/apps/details?id=com.google.android.keep&hl=ja&gl=US)を使っています。ただ、普段使わない自分にとって不要な機能もあり、もっとシンプルなメモアプリを使いたいなと思いました。Play Storeで良さげなメモアプリを探しましたが、広告がついていたり、見た目が気に入らなかったり。せっかくなので自分で作ってみることにしました。

### スキル感について

普段の仕事ではWebエンジニアをしており、ReactやNext.jsなどを主に触っています。ネイティブアプリに関してはちんぷんかんぷんな状態で、Flutterについても同じです。ChatGPT先生を頼りまくることになりそうです。

### 作るものを決める

まずどんなメモアプリを作るかを決めます。自分がメモアプリを使うことを想像しながら、とりあえず紙に書いてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

現在のAndroid開発ではライフサイクルメソッドのオーバーライドは推奨されてないけど、もっといい方法ないかな話

# 概要

昔は当たり前であった実装方法が現在では、推奨されなくなってたりします。たとえば、`onResume()`などのライフサイクルメソッドでもオーバーライドを現在ではしなくなっています。

[公式](https://developer.android.com/topic/architecture/recommendations?hl=ja#compose_1)には以下のように「アクティビティやフラグメントのライフサイクルメソッドをオーバーライドしない」というのを強く推奨してます。

![スクリーンショット 2023-12-17 2.59.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10494/192be228-54cb-66b0-4ddd-2e4244466322.png)

対応方法は書いてあるのですが、ここで、`callbackFlow`を使って、ライフサイクルも`Flow`として管理すると使いやすいかもね。という話です。

# 公式の対応方法

書いてある通りです。Lifecycle

元記事を表示

kotlinx.serializationでOptionableなPropertyを定義する

ちょっとだけ躓いてしまったので、備忘録を残します。

## OptionableなPropertyってなんのこと?
下記のようなjsonが送られてくる場合を考えます。

“`json
{
“parameter_1”: 123,
“parameter_2”: 456,
“parameter_3”: “sample string”,
“optional_parameter”: “optional string” // ←入ってないこともある
}
“`
状態によって含まれたり、含まれなかったりする
Property(`optional_parameter`)のことを指しています。

「このようなPropetyをKotlinのdata classはどう記述すれば良いか?」
が本記事の内容です。

## 結論
__optionalのパラメータは、デフォルト値を設定する必要があります。__

下記に2つ例を示します。

“` kotlin:例1_optionalがない場合はnullとする場合
import kotlinx.serialization.Seria

元記事を表示

[kotlin][Android]WebViewの「target=blank」が正常に動作しない時の対応

Webviewを使用していると必ず当たる壁「target=blank」問題
これはHTMLでは別タブで開く時に使われるタグなんですがAndroidのWebviewではデフォルト設定では動作しないように設計されています。
どうもセキュリティとかを鑑みてのことのようですが実行しなければ始まりませんよね?
その際の設定方法とかをメモ書きいたします

まずは動作するコードを貼ります

“`
// target=blank時の処理
webView.settings.setSupportMultipleWindows(true)
webView.webChromeClient = object : WebChromeClient() {
override fun onCreateWindow(
view: WebView?,
isDialog: Boolean,
isUserGesture: Boolean,
resultMsg: Message?
): Boolean {
// target=blank時は別ブラウザで実行
val hre

元記事を表示

Androidのプロセス間通信って?BinderProxyってなに??

本記事では、プロセス間通信や、BinderProxyとは何か、そして普段のAndroid開発の中でどのように登場するのかについて話していきます。

## 簡単に話すと
BinderProxyとは、Androidのプロセス間通信(IOC)の仕組みの中で重要な要素です。プロセス間通信は、コンピュータの動作において、複数プロセス間でデータをやりとりする仕組みのことです。Androidアプリは1つのプロセスにつき1つアプリケーションを走らせることができます。日記アプリで、何か別の写真アプリを経由してに写真を投稿すると思いますが、この時日記アプリ->写真アプリ->日記アプリと複数のプロセルをまたいだやりとりをしています。この複数プロセスの間のやりとりを、Android OS上で上手くやってくれる子がBinderProxyということです。

## 登場人物
| 名前 | 解説 |
|:-:|:-:|
| **クライアント** | クライアントはサービスやデータを要求している側のプロセスです。冒頭の文章だと日記アプリですね。 |
| **サーバー** | サーバーは、要求されたサービスやデー

元記事を表示

デフォルト動作を理解して使ってますか?

この記事は、株式会社ACCESS Advent Calendar 2023 の19日目の記事です。

私個人としては今年はこれ含めてまだ2個しか記事投稿していないことに気づきましたが、去年一昨年が年1個だったのと比べると2倍に増えたとポジティブに捉えることにします。

# はじめに

多くのツールは、設定やパラメーターでその挙動を制御できるとともに、指定しなかった場合のデフォルト動作が存在します。それを理解せずに使うと、思いもしなかった挙動に直面する危険性があります。

私個人やうちのチームが実際に体験した例を(脚色も交えながら)いくつか挙げることで、デフォルト動作を理解して使うことの大切さをこの年末に改めて再認識する機会にしょうと思います。

# 1) RubyのNFKモジュールで半角カナ変換時に文字化け

## やろうとしたこと: 全角カタカナに変換

Rubyで半角カタカナを全角カタカナに変換したいです。
日本語のコード変換というとNKF、という知識から[ドキュメント](https://docs.ruby-lang.org/ja/latest/class/NKF.html)を見る

元記事を表示

compileSdkVersionとtargetSdkVersionの違い

# はじめに
いつも忘れてしまう。SDKの違いについてメモとして残しておきます。

# targetSdkVersion
以下に影響する

* UIの見た目
* UIの動作のアニメーション

# compileSdkVersion
以下に影響する

* 指定したバージョンまでの機能が使える

## 注意!!
compileSdkVersionで指定したバージョンの機能が使えるけど下位互換を意識する必要がある
以下の表記のやつ

“`java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.L) {
// ここはLollipop(Android 5.0)以降で実行される。
} else {
// こっちはKitKat(Android 4.4)以前。
}
“`

# まとめ
本当によく忘れるので覚えておいて損はないと思う。

元記事を表示

Androidスマホを使ったイーサネットテザリングによるWi-Fi環境構築例

:::note
1人暮らしの賃貸等で回線工事をするのが面倒な人向けに、イーサネットテザリングを使用したWi-Fi環境の構築方法についてまとめてみました。
:::

# イーサネットテザリングとは

スマートフォンに有線LANアダプターを取り付け、Wi-Fiルーター等に直接LANケーブルをつないでテザリングする方法をイーサネットテザリングと言います。

::: note warn
現時点※2023/12/19時点でイーサネットテザリングを使用できるスマートフォンは、Android11以上が搭載されたスマートフォンのみとなっています。
:::

# 必要なもの

– Android11以上のスマートフォン
– 長時間使用するなら、大容量バッテリー搭載機種がおすすめです。
– Rakuten Mobile等のデータ無制限プランで契約できるt通信キャリアで契約すると費用を抑えられます。(この記事で紹介する例では、Rakuten Mobileを使用しています)
– 自宅で使用しているスマホ:**Galaxy S20 Ultra 5G**

https://www.sams

元記事を表示

Android Keystoreを利用したAzure IoTへのセキュアな接続

### はじめに

IoTデバイスとして、さらには他のIoTデバイスの表示/操作器としてAndroidデバイスは手ごろな選択肢となる。
IoTデバイスで用いられるMQTT接続をAndroidデバイスから行ってみたい。
その際、Azure IoTを利用し、TLS相互接続によるセキュアな接続ができないか試した。

### Android Keystoreについて

Android KeyStoreは、Android 4.3(API レベル 18)以降で利用可能となった、Androidデバイス上で暗号鍵を安全に保管するためのシステムである。以下、主な特徴

1. セキュリティの強化: Android KeyStoreは、デバイスのセキュリティハードウェア(存在する場合)を利用してキーを保護します。これにより、キーがデバイス外部に露出するリスクを最小限に抑えます。

2. キーの生成と管理: アプリはKeyStoreを通じて、新しいキーを生成したり、既存のキーを取得したりできます。また、キーの使用方法(例えば、暗号化、署名など)に関する制限を設定することも可能です。

3. アクセスコントロー

元記事を表示

[Android] 最強のチート対策()の紹介

:::note alert
**筆者はチート対策の専門家ではなく、ゲーム開発者でもありません。趣味で齧っている程度でございます。
それに加え、このネタ記事は有用性のない雑な知識を垂れ流すだけの内容となっております。時間を無駄に浪費したくない方は、ブラウザバックをオススメします**
:::

# はじめに
日々チート対策に追われ、決して終わる事のないイタチごっこを永遠にやらされているアプリ開発者の皆様、お疲れ様です。

既存のチート対策を施しても中々防げるものでなく
ハッカー達は、あらゆる手段を使ってそれを回避して来ます。殴りたくなりますよね。
**そんな貴方にオススメ!**
この記事では、一味違ったチート対策をご紹介させていただきます。

:::note warn
# 役に立つとは言ってない
:::

# 前提知識
・APKのデコンパイルに関するリバースエンジニアリングの知識

・IDA Pro、GhidraなどのDisassemblerに関する知識

・関数フックなどの低レベルの操作に関する知識

・SOインジェクションに関する知識

・Androidの内部動作に関する最低限の知識

元記事を表示

手っ取り早くWindowsでadbコマンドを利用できるようにする方法

“`bat
winget install Google.PlatformTools
“`

:::note warn
たまにシステムが古いとエラーになるので、Windows Updateの実施とかストアの更新とか追加コマンドが必要になる場合があるけど、エラーが出た場合の具体的な対処はよくわからん
とりあえずwingetのバージョンを上げておけばええんでないかな
https://forest.watch.impress.co.jp/docs/news/1535509.html
:::

“`bat
C:\>winget install Google.PlatformTools
見つかりました Platform Tools [Google.PlatformTools] バージョン 34.0.5
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
アーカイブを展開しています…
アーカイブが正常に展開されました
パッケージのインストール

元記事を表示

IT業界に憧れる臨床工学技士が独学でAndroidアプリを開発した話

# はじめに
病院や医師が本気の医療を提供するためには、医療機器も実力を発揮できるよう、常日頃から交換部品や消耗品の定数を維持しておく必要があります。医療機器を安全かつ効率的に運用するうえで在庫管理は重要ですが、やはり患者さんの命に直接影響するという意識が低く、在庫管理は軽視されがちです。

私は臨床工学技士でありIT職種ではありませんが、部署内で使用する在庫管理アプリを開発・運用し2年ほど経過しました。そんなお話をしたいと思います。完成度については、プロの皆さんには遠く及ばないことは存じておりますので、温かい目で読んでいただけるとありがたいです。

# 私について
札幌市内の病院に勤務する臨床工学技士ですが、大学生のときからアプリ開発に興味がありました。Java・Kotlin・Python・C#などを独学で勉強し、自分ができることを使って自分や周りの人の仕事を少し楽にしたいと考えています。
### 臨床工学技士とは
臨床工学技士は専門学校や大学を卒業後、国家試験に合格することで厚生労働大臣より免許を受け、医療機器の操作や保守管理を生業としています。
我々が携わる医療機器は多岐に渡り

元記事を表示

既存のアプリを魔改造して、音声入力対応のデジタルサイネージを作ったお話

https://tech.i3-systems.com/entry/2023/10/31/kaigi_on_rails_2023 

このイベントに持ち込んだ、フラッシュ暗算をどのようにして作ったのか、という実装寄りのお話です。

## 既存: 手でポチポチと入力するフラッシュ暗算アプリ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/6485e33e-c5ab-98bd-8cee-7e0754468bf3.png)

もともとは、Androidアプリ開発を始めたエンジニアが練習で作ったものでした。画面数もこの絵のくらいで、非常に簡素なものでした。Jetpack Composeも、Navigationコンポーネントも使われていない、素直にActivityを並べて作ったアプリでした。

## Step0: ViewModel + LiveData の構成にする

これはデジタルサイネージ関係なく、ただただ画面とロジックの分離です。

もともと、Activityにベタ書きで乱数発

元記事を表示

Android版のGNU Emacsについて


# Android版のGNU Emacsについて

[0. 前書き](#0-前書き)

[1. Android版のGNU Emacsの入手](#1-android版のgnu-emacsの入手)
[1.1 F-Droid版](#11-f-droid版)
[1.2 SourceForge版](#12-sourceforge版)
[1.3 野良ビルド版](#13-野良ビルド版)

[2. Android版GNU Emacsと共存可能なTermuxの入手](#2-android版gnu-emacsと共存可能なtermuxの入手)
[2.0 用語の定義](#20-用語の定義)
[2.1 F-Droid版](#21-f-droid版)
[2.2 SourceForge版](#22-sourceforge版)
[2.3 野良ビルド版](#23-野良ビルド版)

[3. 野良ビルドの必要性](#3-野良ビルドの必要性)
[3.1 Android版GNU Emacsの場合](#31-android版gnu-emacsの場合)
[3.2 Termuxの場合](#32-termuxの場合)
[3.3

元記事を表示

OTHERカテゴリの最新記事