Android関連のことを調べてみた2022年07月01日

Android関連のことを調べてみた2022年07月01日

スマホで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

元記事を表示

【Kotlin超入門】KotlinとJavaの違い

# はじめに
こんにちは!新人エンジニアのふかこうです!
今回初投稿ということで、私が現在勉強中のKotlinについて記事を書いていこうと思います。
Kotlinに興味がある方、ぜひ一緒に勉強していきましょう!

# この記事の対象者
・Androidアプリ開発に興味がある方
・Kotlinを学びたい方
・初級エンジニア
・IT企業に就職する学生

# 筆者のレベル
・新人エンジニア
・これからKotlinでアプリ開発をしていく

# Kotlinとは
Kotlin(コトリン)は2011年ごろに発表されたプログラミング言語です。
**JVM**上で動作する静的型付けのオブジェクト指向で、静的なnull安全が保証されているのが特徴としてよくあげられます。
簡単に言うと「Javaをもっと簡潔にしたオブジェクト指向言語」です。
Androidアプリの開発が可能であり、Google社がAndroidの開発言語として公式認定したプログラミング言語でもあります。
ですが、Kotlinはアプリ開発専用ではないというところに注意しましょう。Webサービスの作成も可能なんです!

# 主な開発ツール

元記事を表示

【Coroutinesガイド】suspend関数の構成

※ソース記事は[こちら](https://kotlinlang.org/docs/composing-suspending-functions.html)
このセクションではsuspend関数の構成に対する様々なアプローチについてカバーしている。
## デフォルトはシーケンシャル
リモートのサービスや計算のような、有益なことをする二つのsuspend関数がどこかに定義されていると仮定する。それらは単に有益なふりをしており、実際は次の例のため、それぞれ1秒遅延するだけとする。
“`Kotlin
suspend fun doSomethingUsefulOne(): Int {
delay(1000L) // ここで有益なことをするふりをする
return 13
}

suspend fun doSomethingUsefulTwo(): Int {
delay(1000L) // ここでも有益なことをするふりをする
return 29
}
“`
それらをシーケンシャル-最初は`doSomethingUsefulOne`、その後で`doSomething

元記事を表示

KotlinでTODOアプリをつくる~その3~

引き続き、Android向けTODOアプリ作成についてまとめます。

## その3で扱う内容
これまで、[その1](https://qiita.com/satona-oinuma/items/dfd9bebf9c2e00247c49)ではviewBinding、[その2](https://qiita.com/satona-oinuma/items/f31a4a948eb05a918ee1)ではFlagmentを扱いました。
その3ではリストの表示方法として、RecyclerViewを扱います。

### クラス構成
今回新たに用意するクラスはありません。
今まで作成した6つのクラスのうち、主に以下の2つを使用します。
– CategoryAdapter
– ItemAdapter
後述しますが、どちらもRecyclerViewのAdapterを継承したクラスです。

また、前回に引き続き、以下の4つのファイルを使用します。
– MainActivity.kt:Activity管理クラスのファイル
– MainFragment.kt:Fragment管理クラスのファイル
– layout

元記事を表示

jetpack composeで画像をカスタムして出したい!!

# 初めに
今回は、jetpack composeを使って画像をいい感じにカスタムして出していこうと思います。

### 実装
まず、いい感じにカスタムと言われて最初に思い浮かぶのって角丸とか比率表示だと思います。
その二つは意外と楽なのでちゃちゃっと書いていきます
“`kotlin
shape = RoundedCornerShape(size = 8.dp),
Modifier.aspectRatio(4.0F / 3.0F)
“`
なんとこれだけですね
`shape`は4つ引数を渡してあげることで各角に対して個別に設定することができます。
`aspectRatio`に関しては、今回の指定では一番ポピュラーな4:3にしてみました。
`Float`での指定なので割と細かく設定できますが、4:3が一番綺麗で多いんじゃないかなと思ってます。
ただ画像を出すだけじゃなくて`ripple`もつけたいという方は、下に`Card`を置いてあげることで綺麗な`ripple`が自動で追加されます。

### 最後に
今回は、jetpack composeを使って画像のカスタム表示をやってみました

元記事を表示

Android12でのスプラッシュ画面について

# はじめに
Android12(sdk31)ではデフォルトでSplashScreenというスプラッシュ画面が表示されるようになりました。
そのためAndroid11以前でカスタムスプラッシュ画面を実装している場合は、
それがAndroid12以降でも適切に表示されるよう、アプリをSplashScreenAPIに移行する必要があります。(参照:[Android developers](https://developer.android.com/guide/topics/ui/splash-screen/migrate#keep_the_custom_activity_for_branding))
本記事ではAndroid11以前とAndroid12で、スプラッシュ画面における挙動を揃える方法を説明します。

![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819683/0d416c6d-9866-64ab-f766-58fc3724b062.gif)

# 開

元記事を表示

Androidの各機種・バージョンで検証したい人におすすめのRemote TestKit 〜HTMLメール作成の救世主〜

※ 本記事は[Qiita Engineer Festa 2022](https://qiita.com/official-campaigns/engineer-festa/2022)の **Remote TestKitを使ってレビューを書こう!** のテーマへエントリーする記事となります。

# 経緯

HTMLメールの作成って大変ですよね。
flexboxが使えず、テーブルレイアウトで書かなければいけないし、
古代のPC環境を使い続けている会社も送信対象となっているメールの場合、
とある環境で表示したときの崩れを修正したと思ったら、別の環境で表示したときに崩れてしまったり、
ネットでググってもドンピシャな記事が出てこなくて四苦八苦したり…。
参考:[HTMLメール作成のコツ・注意点](https://qiita.com/ymeeto/items/12001ff30c95729126c2)

中でも一番大変なのが、Android環境やOutlook環境で崩れないメールを作成することだと思います。
iOSやMac、WEBのGmailなどは思ったとおりの表示になってくれることが比

元記事を表示

【android】ソフトウェアキーボード出現によりviewportを縮める件

はじめに

webページのレスポンシブ対応をしている時にandroidはソフトウェアキーボード出現によってフッターを持ち上げてしまい、画面の見栄えがよくなかったのでそちらを修正しました。
次回同じ課題にぶつからないように忘記録です。

修正方法

index.htmlファイルに直接`javascript`を記述します。

“`html:index.html








/* ここを追加するだけです */