- 1. スマホの気圧センサーと台風
- 2. スマートフォンのセットアップ手順
- 3. 【Jetpack Compose】OutlinedTextField 全体に対して onClick する方法
- 4. 不正なExtraを含んだIntentを受け取ったことによるクラッシュに対処する
- 5. 【Android Studio】辞書ファイルを設定してうるさいタイポ指摘にサヨナラする
- 6. Type Safety に Navigation Compose を使う場合、SavedStateHandle 経由で NavArg を受け取るときは typeMap を渡そう
- 7. テキストを装飾する -SpannableString-
- 8. 話題のkotlin Multiplatformを使ってみた(~実装まで)
- 9. android studioのstringResourceで頭に空白を入れる方法
- 10. 【AndroidStudio】日本語化手順まとめ
- 11. 【Unity】StreamingAssetsに配置したファイルをAndroidで実行時に読み込む
- 12. 【初心者向け】個人開発しているAndroidアプリでCIを回してみた【種族値クイズ】
- 13. Android クイック設定タイル開発 使える物を作ってみよう その1
- 14. ASUS ZenFone 2 Laserをバッテリレスで使用する
- 15. BroadcastReceiverでの非同期処理にはgoAsyncを使おう
- 16. RecyclerView をより速く
- 17. LineageOSのFMラジオを日本対応にする
- 18. MPAndroidChartでチップをいい感じにしたい
- 19. auユーザー向け:AndroidからiPhoneへ機種変更時のデータ移行方法
- 20. 2024年7月のアウトプットのふりかえり
スマホの気圧センサーと台風
# はじめに
以前スマホのセンサーをPythonで操作するアプリをPlyerで作ってみたが(以下記事参照)、気圧センサーが本当に動作しているのか?がわからなかったが、ちょうど、今日台風7号がきていたので試してみた。# 気圧センサーのデータ取得
[PythonでAndroidスマホの各種センサー情報を取得する。](https://qiita.com/tapitapi/items/51ddefc1dd8e810430c8)barometer.pressureで取得。
“`python:Barometer
from plyer import barometer
#有効
barometer.enable()
#取得
output+=f’Barometer\n{barometer.pressure:0.2f} hPa\n\n’
“`# 結果
台風が近づくとどんどん気圧が下がっていく事がわかる。あらためて数値で見てみると面白い。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129
スマートフォンのセットアップ手順
1. wifiに接続する
1. PCでパスワード共有用のlocalサーバーを立ち上げる serveなど
1. google もしくは appleのアカウントのID, passwordがわかるメモのファイルを 2. のサーバーから見られる状態に設定する
1. ログインする
1. 1passwordをダウンロードする
1. 1passwordにログインする
1. 各種サービスへログインする
【Jetpack Compose】OutlinedTextField 全体に対して onClick する方法
# 完成形(OutlinedTextField をクリックすると日付選択ができるようにする)
![OutlinedTextFieldAndDatePicker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/053364ae-08ca-4287-325c-338e56bc4096.gif)
– 日付を選択すると OutlinedTextField の値を変更する
– 日付選択はダイアログから行う
– テキスト入力はさせない
– 日付選択のダイアログを閉じると OutlinedTextField のフォーカスを外す# 実装
## OutlinedTextFiled 全体を選択可能にする
【NG】 Modifier.fillMaxWidth().clickable(onClick)
“`kotlin
OutlinedTextField(
modifier = Modifier
不正なExtraを含んだIntentを受け取ったことによるクラッシュに対処する
Androidアプリは、外部からIntentを受け取ることによって起動します。IntentにはExtrasという任意の引数を渡す仕組みがあり、多くのアプリで利用されています。しかし、Extrasに不適切な情報が含まれている場合、アプリが容易にクラッシュしてしまうことはあまり知られていないかもしれません。Extraを読み出している場合や、明示的にExtraを扱っていなくても、SavedStateHandleを受け取るViewModelを扱っている場合は注意が必要です。
例えば、アプリAのonCreateで以下のようにExtraを読み出しているとします。
“`kotlin:アプリA
val data = intent.getStringExtra(“hoge”)
“`このアプリAを、アプリBから次のように起動させてみます。
“`kotlin:アプリB
val intent = Intent()
intent.setClassName(“com.example.myapplication”, “com.example.myapplication.MainActivity”)
【Android Studio】辞書ファイルを設定してうるさいタイポ指摘にサヨナラする
## 概要
オリジナルのアプリを作っていたりすると、コード中にオリジナルの言葉が登場することは多々あると思います。
ですがAndroid Studioは親切なので、そういった言葉も~~余計なことに~~ご丁寧にタイポ指摘してくれます。アプリ自体に影響があるわけではないのでそのままでも全然問題ないのですが、何か気持ち悪い!となるのでこれが出ないようにします。
## 対処法
### 1. Android Studioの設定で対処
以下の画像のように、設定のSpellingで指摘しないでほしいワードを追加します。
個人で進めているプロジェクトならこれで必要十分だと思います。![スクリーンショット 2024-08-15 15.07.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2724617/41a81fab-c872-ee74-5812-3dafa8f475e4.png)
### 2. spellチェック自体外してしまう
設定 -> Inspections -> Typoの部分のチェッ
Type Safety に Navigation Compose を使う場合、SavedStateHandle 経由で NavArg を受け取るときは typeMap を渡そう
# 結論
**Type Safety に Navigation Compose を使う場合、SavedStateHandle 経由で NavArg を受け取るときは `typeMap` を渡しましょう!**
Type Safe な Navigation Compose に関するドキュメントはこちら 👇
[Type safety in Kotlin DSL and Navigation Compose](https://developer.android.com/guide/navigation/design/type-safety)# ハマっていたこと
NavGraph を定義するとき、`typeMap` を渡しているのにアプリがランタイムで落ちる事象が発生しました。
具体的には次のエラーメッセージを確認しました。
“`text
java.lang.IllegalArgumentException: Cannot cast page of type XXX to a NavType. Make sure to provide custom NavType for thi
テキストを装飾する -SpannableString-
# SpannableStringとは?
### 概要
・文字列にさまざまな装飾やスタイル設定を行えるようにするためのもの
・一つの文字列に対して複数のスタイルを適用させることができる## 注意点
・例として掲載しているコードはViewBindingを使用しています
(変数`b`として定義しています)## 主な種類
|クラス名|概要|
|:-:|:-:|
|ForgroundColorSpan|テキストの色を変更する|
|BackgroundColorSpan |テキストの背景色を変更する |
|StyleSpan|テキストを太文字やイタリックにする |
|TypefaceSpan |指定フォントを適用する |
|RelativeSizeSpan |テキストのサイズを相対的に変更する |
|AbsoluteSizeSpan |テキストのサイズを絶対値で変更する |
|URLSpan |テキストをリンクにする |
|UnderlineSpan |テキストに下線を引く |
|StrikethroughSpan |テキス
話題のkotlin Multiplatformを使ってみた(~実装まで)
# はじめに
基本、公式のチュートリアルをなぞってます。
https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html公式チュートリアルは全文英語の記事となっているので、英語苦手だよーって方とかは参考にしていただけると幸いです。
いままでアプリ開発とかをしてこなかった方でも理解できるよう、深くまでは掘らず比較的ざっくりとした感じの記事構成となっていますので、あらかじめご了承ください。
# 前提
– kotlin multiplatformの環境構築が完了していること
https://qiita.com/atsu123456789/items/147e9e03d2018b20841b# ロジックの実装
## 共通処理について
まずは`GreetingKMP/composeApp/src/commonMain/kotlin/com/jetbrains/greeting/Greeting.kt`の中身を書き換えてみます。“`Greeting.kt
package com.jetbrains.
android studioのstringResourceで頭に空白を入れる方法
# 初めに
今回はandroid実装でStringResourceを使う際、頭に空白を有効にする方法を紹介します
### 本文
定義したい文言の頭に下記を追加することで半角の空白を追加することができます
\u0020
### さいごに
今回は自分が実装していて少し手間取ったので備忘録として残しておきます
【AndroidStudio】日本語化手順まとめ
# はじめに
みなさん慣れていればAndroidStudioインストールしてそのまま使用することが多いかと思います。
ですが、初学者の方や英語が弱い方などは、英語というだけで萎縮してしまうもの。
そこで今回は入門編として、AndroidStudioを日本語化する手順をまとめてみようと思います。# 日本語化手順
実はJetBrainsのマーケットに日本語化プラグインが公開されています。
今回はそのプラグインを使用して日本語化してみます。まずはご利用のAndroidStudioのバージョンを確認しましょう。
“`
Android Studio Koala | 2024.1.1
Build #AI-241.15989.150.2411.11948838, built on June 11, 2024
“`確認できたら次に、以下リンクより該当のプラグインページを参照します。
https://plugins.jetbrains.com/plugin/13964-japanese-language-pack——/versions
上記リンクより適切なプラグインを導入し
【Unity】StreamingAssetsに配置したファイルをAndroidで実行時に読み込む
# はじめに
想定読者様はこちらです。
– StreamingAssets(ストリーミングアセッツ)に配置したファイルをAndroidビルド時に使用したいお方
– 具体的にどのような仕組みでAndroid実行時に読み込んでいるのか知りたいお方調べてみたところ方法は書いてあっても順序を追って仕組みを説明してくださる方は見かけなかったので確認の意味合いも込めて仕組みについても言及させていただきます。
:::note warn
**折りたたみ**
折りたたみになっている個所は自身の解釈を織り交ぜて解説をしております。
間違い等のご指摘は大変に歓迎しておりますのでお時間のある方はぜひお願いいたします。
:::# 実装
解説するに際してこのようなものを作成してみました。
“`C#:StreamingAssetsPathFormatter.cs
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;
using Cysharp.Threa
【初心者向け】個人開発しているAndroidアプリでCIを回してみた【種族値クイズ】
# はじめに
最近、自分の個人開発をしているプロジェクトでCIを回せるようにしました。
リリースしたアプリがこちらです。ポケモン好きな人にはぜひ使ってみて欲しいです
最近100インストールを超えました!🎉 嬉しい。。https://play.google.com/store/apps/details?id=com.nagumoapps.pokemonstatsquiz&hl=ja
CIを回せるようにしようと思った経緯や学びについてまとめておこうと思います。
# この記事の対象者
– CI/CDに興味がある人
– アプリ開発初心者# CIとは
CIとは、Continuous Integrationの略で、日本語では継続的インテグレーションと言われます。
主に開発の中で、静的解析、ビルド、テストなどの工程を自動化することを指します。
また、CD(継続的デプロイ)と合わせてCI/CDとして使われることも多いです。
CDも名前の通り、本番環境やテスト環境へのデプロイを自動化することです。CI/CDを実現することで、品質の確保とリリースサイクルにかかる時間の削減ができるようになる
Android クイック設定タイル開発 使える物を作ってみよう その1
# はじめに
– [こちら](https://qiita.com/stranger396/items/d001172004755cd8c65a)の記事で紹介した、最小限タイルをカスタマイズしていきます。
:::note warn
この記事は、断片的に役立つ人間もいるだろうとの考えの下、「筆者の筆者による筆者のためのタイル」の開発過程を共有するものです。
:::# 完成イメージ
– タップしたときにダイアログが表示され、ディスプレイの輝度を数パターンから選んで変更するタイルを目標とします。
– イメージが近いのは、インターネットの設定を行うタイルです。それのダイアログで選択するものがWiFiアクセスポイントではなくディスプレイ輝度になっているようなものをイメージしています。# 本記事の範囲
– ユーザーがタイルをタップしたときに、あらかじめ決められたディスプレイ輝度に変更するところまでを実験します。# 手順
1. AndroidManifest.xmlにて、システム設定の変更権限を要求します。
1. TileServiceを継承したクラスの*onClick*にタップしたときの
ASUS ZenFone 2 Laserをバッテリレスで使用する
### 背景
ASUS ZenFone 2 Laserのバッテリは交換可能なバッテリなのですが、バッテリが妊娠して使い物にならなくなって新規に購入する気もなく放置していました。このたび、USB充電器から直接配線して復活させたのでそのメモです。### 回路は以下の通り
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242268/e0af6701-c2ca-d23e-a2ce-17a7bb2c4c42.png)### 用意したダイオード
・整流用ダイオード 100V 2A PS2010R(秋月電子で10個80円のもの)
### 整流用ダイオードを入れている理由
・バッテリ電圧が定格3.85VのためUSB充電器(5.0V)の電圧を下がるため
・スマホ本体にPCとのUSBケーブルをつないだ時逆流しないようにするため
の2点です。スマホの内臓バッテリの定格電圧が3.85Vでした。ダイオードのデータシート(仕様)をみると順方向での消費電圧は0.6V-1.2V(1A)、200mA時0.
BroadcastReceiverでの非同期処理にはgoAsyncを使おう
Jetpack Glanceを調べていたら、非常に優れたコードを発見したので紹介します。
`goAsync`という拡張関数です。なぜこれがinternalなんでしょう?知見の詰まった素晴らしいコードです。https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:glance/glance-appwidget/src/main/java/androidx/glance/appwidget/CoroutineBroadcastReceiver.kt
“`CoroutineBroadcastReceiver.kt
internal fun BroadcastReceiver.goAsync(
coroutineContext: CoroutineContext = Dispatchers.Default,
block: suspend CoroutineScope.() -> Unit,
) {
val coroutineScope = CoroutineScope(
RecyclerView をより速く
ある人は言いました。**速さとは正義である**。
冗談はさておき、[RecyclerView](https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView) の表示ってもっと速くなんないかなというお話です。[ViewPager2](https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2) を使って、画面を左右に移動できる Andoroid アプリを作っているのですが、RecyclerView や ListView を使っていると各行のレイアウト生成に時間がかかり、左右の移動がカクカクになってます。
私は、初めて読んだ本に「RecyclerView は、まず行のレイアウトファイル(XML)を作成して…」 と書いてあったので、なにも考えずにレイアウトファイルを作成していましたが、そもそもレイアウトファイルとかいらない子なのではっと思い立ち、レイアウトをコード生成して速さを比較してみ
LineageOSのFMラジオを日本対応にする
ASUS ZenFone 2 Laserのバッテリが妊娠して使い物にならなくなって久しく放置していたのですが、バッテリレスにしてUSB充電器から直接配線して復活したのでその時の対応メモです。
lineage-16.0の本体ソースのパッチ
“`
sed -i “s/zd/ld/g” hardware/qcom/display-caf/msm8916/libhdmi/hdmi.cpp
sed -i “s/zd/ld/g” hardware/qcom/display-caf/msm8916/libqdutils/idle_invalidator.cpp
sed -i “s/zd/ld/g” hardware/qcom/audio-caf/msm8916/hal/audio_hw.c
“`Zenforne2 laser関連のダウンロード
“`
git clone –single-branch -b 9.x https://github.com/Asus-MSM8916/android_vendor_asus.git
git clone –single-bra
MPAndroidChartでチップをいい感じにしたい
## これは何
Androidで一番使われているであろうグラフ描画ライブラリMPAndroidChartでチップをいい感じに表示させようとした時に細かいところで難儀したので、その覚書です## 書かないこと
MPAndroidChart本体の使い方、記述の仕方は先人たちがいるので割愛します## やったこと
### チップを出す位置の調整
折れ線グラフを使用していたのですが、それぞれのデータ選択時に表示されるチップの位置を調整する必要がありました。
何も指定しなければ折れ線の上にチップが表示されますが、グラフの表示領域に限りがあったため、折れ線の上にチップが表示し切れない場合は下に表示するように調整が必要でした。左右も同様です。### チップの見た目編集(MarkerView)
`MarkerView`を使って、表示時の細かいレイアウト調整ができます。
実際に調整が可能なメソッドを2つ紹介します#### 1. refreshContent
メソッドがチップを表示する度に呼び出されます。ここでは表示する対象のデータにアクセスできるので、データを元にチップの表示を調整することが
auユーザー向け:AndroidからiPhoneへ機種変更時のデータ移行方法
毎年、新しいスマホの端末が続々と発売される時、最新のスマホを買い、機種変更をする方が大勢います。大手携帯キャリア会社の一つとしてのauは、多くのユーザーに愛用されています。auの携帯を使っているユーザーは、auデータ移行サービスを利用してauの機種同士でAndroidからiPhoneへデータを移行できます。auの機種同士でない時も、[他のAndroidからiPhoneへデータを移行する方法](https://www.fonepaw.com/ja/tutorials/android-to-iphone-transfer-data.html?utm_source=qiita.com&utm_medium=referral&utm_campaign=fpatitd0809
“他のAndroidからiPhoneへデータを移行する方法”)があります。そこで、今回の記事は機種変更する時に「auデータ移行サービス」を利用する方法と、auの機種同士でない時のデータ移行方法を3つ紹介します。
## 方法1、auの「データお預かり」を利用してデータをAndroidからiPhoneへ移行します
*
2024年7月のアウトプットのふりかえり
2024年7月のアウトプットをふりかえるとアウトプットしたものなどをまとめてみました。
## Blog等
* 2024/07/29
* [OASIS Web UI: インストールから使用まで](https://hamaruki.com/oasis-web-ui-guide/)
* 2024/07/28
* [GPUStack:オープンソースGPUクラスターマネージャーの完全ガイド](https://hamaruki.com/gpustack-open-source-gpu-cluster-manager-guide/)
* 2024/07/28
* [【驚愕のコスパ】LLaMa 3.1 405B を 8B に変換!Google Colab で簡単実装](https://hamaruki.com/llama-3-1-405b-to-8b-google-colab/)
* 2024/07/28
* [OctoAIの料金プランと機能:AI開発を加速させる革新的なプラットフォーム](https://hamaruki.com/octoai-pricing-features/)
* 2