- 1. JetpackCompose NavBackStackEntry – Composable のスタックとライフサイクル
- 2. 【kotlin】Anyクラスについて
- 3. 【Jetpack Compose】Preview をもっと簡単に増やしたい場合(PreviewParameter, Multipreview Annotations)
- 4. EditTextで範囲選択している文字をドラッグで位置を変更させることを無効化させる方法
- 5. クラウド上で実機スマホをレンタルできるRemote TestKitを触ってみた
- 6. wordleの国名版を作ったよ!
- 7. flutterで電卓アプリ作ったよ
- 8. IntelliJ IDEAでAndroidエミュレータが起動しない件
- 9. 【Android Java】いまさら聞けないActivityとは?
- 10. クラウド上のスマホ?!RemoteTestKitを実際に使って見た!【RemoteTestKit】
- 11. 【Kotlin】Mock と Spy の違いについて(mockk で試してみた)
- 12. どの方法で柔軟にAndroidのGradleのビルドロジックをまとめるか
- 13. 【Android】棒グラフを描画する
- 14. スマホでBLEをNodeJSチャレンジ(失敗)
- 15. collectAsStateWithLifecycleが追加されたぞ
- 16. Kotlin Jetpack Composeについて その2
- 17. AndroidにBluetoothイヤフォンを接続するとAudioTrackの音が鳴らない問題
- 18. Androidのlicense出力ライブラリとパーサー
- 19. “Install And Run”を作る
- 20. Intentの初期化で渡すContextについて
JetpackCompose NavBackStackEntry – Composable のスタックとライフサイクル
Todo ページと Poke ページで遷移します。
LocalLifecycleStateLogger()
をそれぞれに貼ります。“`kotlin
@Composable
fun TodoScreen(
viewModel: TodoViewModel = hiltViewModel()
) {LocalLifecycleStateLogger(” TodoScreen”) // *
“`“`kotlin
@Composable
fun PokeScreen(
viewModel: TodoViewModel = hiltViewModel()
) {LocalLifecycleStateLogger(” PokeScreen”) // *
“`以下の
【kotlin】Anyクラスについて
# はじめに
今回はkotlinで使われる**全てのクラスの親クラス**にあたる ”**Anyクラス**”についてまとめていきます。# Anyクラスとは
まず、Anyクラスについてですが、前述したように Anyクラスは**全てのクラスの親クラス**です。
実際のコードでは省略されている為 目にする事は少ないです。
ですが、どのクラスでも 継承元を辿っていくと最後に辿り着くのは必ずAnyクラスです。
なので、何度も記載する通り **全てのクラスの親クラス** ということになります。# Anyクラスの中身
Anyクラスでは何をしているのか 見ていきましょう
実際のコードがこちらです“`
public open class Any {
〜コメント省略〜public open operator fun equals(other: Any?): Boolean
〜コメント省略〜public open fun hashCode(): Int
〜コメント省略〜public open fun toString(): String
〜コメン
【Jetpack Compose】Preview をもっと簡単に増やしたい場合(PreviewParameter, Multipreview Annotations)
## はじめに
Preview をより簡単に増やせる方法を学んだので、それらを備忘録としてまとめていこうと思います。
### この記事で分かること
– `@PreviewParameter` の使い方
– Multipreview Annotations の使い方## 今回 Preview させるもの
単純にメモのリストを表示させるような、非常に簡単なもので試していきたいと思います。`Loading` 時には `CircularProgressIndicator()` を、`Error` 時には `Dialog` を表示させています。
“`kotlin
@SuppressLint(“UnusedMaterialScaffoldPaddingParameter”)
@Composable
fun ExampleScreen(uiState: ExampleUiState) {
Scaffold(
topBar = {
TopAppBar(
title = { Text(text = “Exa
EditTextで範囲選択している文字をドラッグで位置を変更させることを無効化させる方法
今回はEditTextで色々制御をしていて、範囲選択している文字をドラッグで位置を変更させることを、無効にしたかったことがあったので残しておこうと思います。
# OnDragListener
“`MyDragListener.kt
class MyDragListener : View.OnDragListener {
override fun onDrag(v: View?, event: DragEvent?): Boolean {
return true
}
}
“`
View.OnDragListenerを継承したクラスを作成します。
こちらをreturn trueすることでドラッグ操作を無効化いたします。ただし、範囲選択の範囲位置を調整するドラッグ操作は無効になりません。
あとは作成たクラスをEditTextに設定します。
“`MainActivity.kt
binding.editText.setOnDragListener(MyDragListener())
“`これで終了です。
クラウド上で実機スマホをレンタルできるRemote TestKitを触ってみた
この記事は、Qiita Engineer Festa 2022 [Remote TestKitを使ってレビューを書こう!](https://qiita.com/official-events/f0e8b25feb05af6326b3)の参加記事です。
https://qiita.com/official-events/f0e8b25feb05af6326b3
## はじめに
クラウド上で実機のスマートフォンをレンタルできるサービスがあると知って、面白そうだったので触ってみました。
また、Androidのスマホは多種多様なものが多く、Webの開発でも実際にどう見えてるのかを検証してみたいときに便利かもと思い、触ってみました。なお、僕はネイティブアプリの開発経験はないので、Web開発の面での内容になります。
## 概要
公式の紹介動画が概要としては非常にわかりやすいです。
要約すると、クラウド上で実機のスマホをレンタルでき、今まで手元の実機で行っていた検証をクラウド上で行えるようになるというものです。
wordleの国名版を作ったよ!
# TL;DR
有名なwordleの国名版をアンドロイドアプリにしました。ぜひ使ってみてね!
https://play.google.com/store/apps/details?id=com.chatram.wordle## なぜ作ったか
今年のはじめ辺りにバズっていたので、作れるかなと思って今年の3月くらいに作りました。## 例
![unnamed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648231/b422727c-f5a6-ad30-a242-baba544b10c3.jpeg)本家と同様、文字があっているけど位置が違うと黄色、文字も位置もあっていると緑になります。
## 仕組み
外務省のホームページを参考にして、国として認められているところの名前をマップにぶち込んで、ゲームが立ち上がるorリセットボタンを押されるたびにランダムでその中の国名が答えとして選ばれます。
入力部分にはひらがなとカタカナ以外は入力できないようにregexで弾いています。
“`dart
// ra
flutterで電卓アプリ作ったよ
# TL;DR
flutter×dartでアンドロイドアプリの電卓を作りました。既存の電卓アプリと違うのは、modが使えます。関数電卓ではないですが。
https://play.google.com/store/apps/details?id=com.chatram.calc_app## なぜ作ったか
ネイティブアプリを作ってみたかったのと、クロスプラットフォームのflutterってどうなの?と思ったので作ってみた。## 例
![unnamed.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648231/5ad0167f-a0d8-fbdc-c47d-9e37bf5afad9.jpeg)
デザインは自分のアンドロイドにプリインストールされていた電卓アプリを参考にしました。## 仕組み
計算部分
“`dart
static String Execute() {
var _result = Decimal.parse(‘0.0’);
try {
_list_numb
IntelliJ IDEAでAndroidエミュレータが起動しない件
Flutter開発でIntelliJ IDEAを使っているのですが、Androidエミュレータがどうやっても起動してくれないという事案が発生しました。自分なりに頑張ったIntelliJ IDEAを用いたエミュレータ起動の解決策を残します。
# 解決策
1. IntelliJ IDEAの右上の**Project Structure**を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/08e800a3-388d-7ff9-9500-199dcad37270.png)
1. ModulesのExport内にある、**Flutter for Android**をマイナスボタンで削除
1. サイドバーにあるProblemの内容をチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017749/41899f52-1838-564c-e54c-be7bcf0bf20c
【Android Java】いまさら聞けないActivityとは?
## はじめに
Android Javaって何?という初学者向けの記事になります。
アンドロイド特有の`Activity`についての内容です。仕事でAndroid Javaを使って修正、開発をしています。
業務に携わってから約半年が経ちました。Android Javaを使うにあたって、学んだことをアプトプットしようと思い記事にしました。
エンジニアになって1年の未熟者なので暖かい目で見ていただけると助かります。
## あなたは誰?
> 現職:SESエンジニア(歴1年)
前職:営業
年齢:27歳
使用言語:Java, Android Java, C++
工程:テスト、実装(設計もやってみたい…)
好きなこと:サウナ/登山/ダーツ/ピアノ/酒/運動全般
もくもく会主催:[新宿もくもく会](https://shinjuku-realize0707.connpass.com/)## Acyivityとは
簡単に言うと`Activity`とは、スマホでいう**一つの画面全体**のことを言います。
クラウド上のスマホ?!RemoteTestKitを実際に使って見た!【RemoteTestKit】# はじめに
開発中のアプリを動かす時「こっちのデバイスだとレイアウトが崩れた」
「iOSだとここの処理がうまく動かない」
「最新のスマホではどうなるんだろう」なんてことありますよね。
しかしそのためにわざわざ実機を用意するのは大変だと思います。
そこで、この問題を解決するサービスが「RemoteToolKit」と言うサービスです。# 概要
「RemoteTestKit」は簡単に言うと、クラウド上のスマホやタブレットを借りれるサービスです。なんと、利用可能な端末はなんと1132件もありました!(2022 7月1日現在)
ラインナップはAndroid 2.3.3などの古いOSから最新のAndroid 13まで幅広くあります。
下のリンクから利用可能な端末を一覧で見れるので是非見てみてください~~https://appkitbox.com/testkit/devicelist/
# 使い方
RemoteTestKitにはWeb版と、ソフトウェア版があります。
ソフトウェア版のほうが圧倒的に便利なので、ソフトウェア版の利用をオススメします!
このソフトはWindow
【Kotlin】Mock と Spy の違いについて(mockk で試してみた)
## はじめに
よく「モックする」というものの「モック」の意味がモノによって異なることを学んだので、それらを備忘録としてまとめていこうと思います。
また、ここでは実際に mockk における Mock と Spy の違いを確認していきます。(※mockk とは Kotlin のモックライブラリです)
### この記事で分かること
– 言葉の定義
– xUnit Test Patterns における Mock と Spy の違い
– mockk における Mock と Spy の違い
– mockk で動作を確認
– Mock
– Spy## 言葉の定義
まず大前提として、モックやスパイの意味は文脈や人によっても異なる可能性があるので注意が必要です。それを踏まえた上で、本記事では「xUnit Test Patterns」と「mockk」のそれぞれにおける言葉の定義を、自分なりにかなり簡潔にまとめていきます。(詳しくは最後の参考資料をご覧ください)
### xUnit Test Patterns における Mock と Spy の違い
–
どの方法で柔軟にAndroidのGradleのビルドロジックをまとめるか
いくつかやり方があり、それぞれメリデメがあるようなのでのでまとめておこうと思います。
nowinandroidがComposite Buildを導入したことで、話題になりました。ちょっと調べてみたんですが、これが最強というのは見つけることができませんでした。かなりプロジェクト規模によって異なってきそうです。メリデメ見ながら採用していく必要がありそうです。
ここではある程度大規模だが、Androidアプリでビルドエンジニアを雇うほどではないという想定をしています。以下で色々試行錯誤していました。
https://qiita.com/takahirom/items/50672e079f42c1b7b00c
https://qiita.com/takahirom/items/0e95d1c1eb6de4f01b0c
# どこにビルドのコードを置くのか?
## buildSrc
プロジェクト/buildSrcにコードを書く方法。
### メリット
色々魔法をGradleが使ってくれるので簡単
小さなプロジェクトではこれでも大丈夫。
プラグインとextension以外が公開で
【Android】棒グラフを描画する
# 概要
`MPAndroidChart`を用いて棒グラフを描画する。ここでは最低限の処理のみ記載。# 手順
ライブラリの導入“`build.gradle
implementation ‘com.github.PhilJay:MPAndroidChart:v3.1.0’
“`“`settings.gradle
repositories {
//(省略)
maven { url “https://jitpack.io” }
}
“`レイアウト作成
“`activity_main.xml
スマホでBLEをNodeJSチャレンジ(失敗) AndroidスマホにてWebBluetoothでは実施済みだが、登録機器にアプリ立ち上がり時に自動接続を試したいことから、WebBluetooth<->ネイティブで実現できる自動接続を模索
スマホにNodeJS立ち上げてなんとかできないか?検証メモ### 利用スマホ
* Pixel3 Android os 12
https://ja.wikipedia.org/wiki/Pixel_3* A20 Android os 11
https://www.galaxymobile.jp/galaxy-a20/### × Servers UltimateアプリでNodeJSサーバー
NodeJSサーバーが実行できるとのことで試す
Nodeサーバーがうまく立ち上がらず断念
ディレクトリのアクセスがAndroidOSで難しくなったせいなのか???
原因は解明の前に次の方法へ#### 参考URL
https://play.google.com/store/apps/details?id=com.icecoldapps.serversultimate&hl=ja&gl=US
collectAsStateWithLifecycleが追加されたぞ
## はじめに
こんにちは、どすこいです。
Androidエンジニアのみなさん、Compose楽しんでますか?
僕は楽しんでます。今回jetpackの`lifecycle-runtime-compose:2.6.0-alpha`で`collectAsStateWithLifecycle()`なるものが追加されたので早速触っていきたいと思います。
## 前提
まずComposeで扱う値をUiStateにまとめたものとします。
そのUiStateをViewModel側でStateFlowとして持っているという状態です。こんな感じ
“`kotlin:MainViewModel.kt
class MainViewModel : ViewModel() {
val _state: MutableStateFlow= MutableStateFlow(UiState())
val state: StateFlow= _state.asStateFlow() data class UiState(
val
Kotlin Jetpack Composeについて その2
# はじめに
これは[前回ーその1](https://qiita.com/hideto1198/items/9895dec8ffa84e0f59a3)の続きです。
また今回も長々と書いていきますのでよろしくお願いします?# 開発環境
– iMac 2019
– Android studio Arctic Fox | 2020.3.1
– Kotlin Jetpack compose 1.0.0-rc02(正式リリースの可能性あり)# 画面操作
## clickable
clickableを使用すると、タップ操作を検知できます。
色々なオブジェクトにボタンのような機能を持たせることが可能です。
各オブジェクトの`Modifier`に設定します。“`kotlin
@Composable
fun TapGesture(){
var count by remember { mutableStateOf(0)}
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Ali
AndroidにBluetoothイヤフォンを接続するとAudioTrackの音が鳴らない問題
# はじめに
Android で AudioTrack を使って音楽を再生するアプリを開発しているのですが、ユーザーからレビューで「ワイヤレスイヤフォンだと音楽が鳴らない」というご指摘をいただき調査した結果、割と謎な手段で問題を回避したので紹介します。
## AudioTrack 使用の流れ
“`kotlin
private fun createAudioTrack(
seek: Int,
onSeek: ((length: Int, time: Int) -> Unit)?,
onPlayEnded: (() -> Unit)?
) {
audioTrack?.release()
val attributes = AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MU
Androidのlicense出力ライブラリとパーサー
# Androidのlicense一覧の自動抽出
Androidアプリが使用しているlicense一覧を自動抽出するライブラリが公開されています。
[https://developers.google.com/android/guides/opensource](https://developers.google.com/android/guides/opensource)このライブラリを使用すると、license一覧画面が簡単に作れます。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2726391/d8ab7a68-8c5f-2f80-d3b8-342654f436ce.jpeg)# パーサー
ただ、Activityが必要ですし、このUIを使いたくない場合もあります。自分でUIを作るには、まずはこのライブラリが出力する下記ファイルをパースする必要があります。
third_party_licenses
third_party_license_metadata下記ファイルについて
“Install And Run”を作る
3年ぶりです。お久しぶりです。(その2)
さて、UnityでAndroidを使って実機デバッグをしていると、「なんで”Build And Run”はあるのに”Install And Run”がないの??」と思うことがあります…よね?。変更点がなくてもビルドするとそれなりに時間かかるし。ということで、作ろう。
“`C#:InstallAndRun.cs
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;// APKファイルのインストールと実行を行うメニュースクリプト
// (もちろんAndoridターゲット専用だけどWindowsとmacOSに対応)public class InstallAndRun
{
[MenuItem(“File/Run without Installation”, true)]
public static bool IsRunValidated()
{
return EditorUserBuild
Intentの初期化で渡すContextについて
`ApplicationContext`と`ActivityContext`について調べていると、「`Intent`に`ActivityContext`を渡すと、メモリリークするからよくない」という割と古めの記事を見かけたので、`Intent`に渡す`Context`が何をしているのか実際に調べてみました。
“`kotlin
val intent = Intent(context, SecondActivity::class.java)
startActivity(intent)
“`### Intentの実装
[Android Open Source Project](https://github.com/orgs/aosp-mirror/repositories) で、`Intent`のコードを確認しました。“`platform_frameworks_base/core/java/android/content/Intent.java
public Intent(Context packageContext, Class> cls) {
mCompone