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

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

Android基礎

## アプリ基礎

AndroidDevelopersのアプリ基礎を読んだことがなかったのでまとめた。
抜粋しているため、詳しくは[こちら](https://developer.android.com/guide/components/fundamentals?hl=ja)。

###### AndroidSDKツール

コードをデータやリソース ファイルと一緒に APK(Android パッケージ)にコンパイルします。**.apk** という接尾語の付いたアーカイブ ファイルです。

#### Androidのセキュリティ機能

Androidアプリはそれぞれセキュリティサンドボックス内で動作し、以下のセキュリティ機能により保護されている

– 各アプリがそれぞれ異なるユーザーになる
– デフォルトでが一意のLinuxユーザーIDが割り当てられる。アプリに割り当てられたユーザーIDのみがアプリ内のすべてのファイルにアクセスできる
etc…

Android システムには ***「最小権限の原則」*** が適用されています。つまり、デフォルトでは各アプリにコンポーネントの動作に必

元記事を表示

androidでpython

# 概要
androidでpythonやってみた。

# 手順
# uaerlandアプリをインストール
# ubunt 22.04を起動
– nano hello.py
“`
print(“hello”)

“`
– python3 hello.py

以上。

元記事を表示

読み込み画像のアスペクト比次第でアスペクト比を加工する機能を作る

# 初めに
今回は`Coil`を使って読み込み画像のアスペクト比次第でアスペクト比を加工していこうと思います
### 本文
使うのは`Coil`の`Transformation`です
今回は横長画像の場合は何もせず縦長画像の場合に変換する機能を作ります
“`kotlin
class CropTransformation(
private val aspectRatio: Float = 1.5f,
override val cacheKey: String,
) : Transformation {

override suspend fun transform(input: Bitmap, size: Size): Bitmap {
val inputImageAspectRatio = input.width / input.height
if (inputImageAspectRatio >= aspectRatio) return input
val newSize = Size(input.width,

元記事を表示

AndroidでQRコード読み取り機能を実装【Kotlin】

## はじめに
今回は`zxing-android-embedded`を使ってQRコードの読み取り機能を実装します。

読み取り画面のレイアウトは、デフォルトのものを使うこともできますが、今回は色々とカスタマイズできるよう自作のレイアウトを適用するように実装します。以下は完成画面です。

mojikyo45_640-2.gif

## 実装

### ライブラリの導入

`build.gradle`のdependenciesに以下のように記述します。

“`kotlin:build.gradle(:app)
dependencies {
implementation ‘com.journeyapps:zxing-android-embedded:4.1.0’

//省略
}
“`

`And

元記事を表示

React Nativeで初めてのAndroid

備忘録

# 概要
React Nativeとfor webでiOS + Webを作っているプロジェクトがあります。
そのプロジェクトでついでにAndriodもやりたいって話。

でもちゃんと書いてるプロジェクトにいきなり突っ込んでもうまく行く気がしない。
一度まっさらのiOS + Webのプロジェクトを作ってそこに突っ込んでみる。

※React Nativeとかその辺の話はしません。

## About Me
|技術|練を見せろ(どんなもんか)|
|—-|—-|
|Web|仕事でやってるざーこざこ。|
|iOS|個人で一回リリースしたくらい。|
|Android|はじめて。何も知らない。|

## 環境など
|もの|バージョンなど|
|—-|—-|
|Mac(M1)|13.1|
|Pixel 6a|13|
|React Native|0.71.5|

# 本題

## 1. RN+for Webの新規プロジェクト作成

割愛

iOS+WebMacでReact Native環境構築

どうもこんにちはたくびー(@takubii)です。

今回はReact nativeの環境構築について紹介したいと思います。
なお、Expoは使わずReact native CLIで構築を行いました。

この記事は2023年3月に書いています。今後のバージョンアップなどで同様の手順では構築できない可能性がありますので、注意してください。

参考
https://reactnative.dev/docs/environment-setup?platform=ios

条件は以下となっております。
– M1 Mac
– IOS、Androidそれぞれエミュレーターで動かす
– React native CLI

### IOS、Android環境共通
“`terminal
$ brew install watchman
“`
node.jsに関してはバージョン管理できるnvm経由でLTSをインストールします。
“`terminal
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/inst

元記事を表示

iOSエンジニアがAndroidに転身して1ヶ月目の感想

##### 今回はiOSエンジニアがAndroidに転身して感じた障壁などを紹介していきます!

まず大きな違いとして挙げられるのが
– プログラミング言語
– 開発ツール

の2つです。

### 言語の違い
言語はiOSではobjective-Cと2014年からswift、AndroidではjavaとC++と2017年からkotlinが使用されています。
自分はswift⇨kotlin,javaへの移行だったのですが、今のところ文法的にはほぼ同じと感じていて移行はしやすいと思います。

### 開発ツールの違い

開発ツールはiOSではXcode、AndroidではAndroid Studioでの開発となります。
ここでの大きな違いはviewの扱いです。
iOS側でのxibファイルとAndroid側でのxmlファイルの扱いの違いを意識できるまではだいぶ開発に苦戦しました。
iOS側xibファイルではドラック&ドロップなどでviewに直接buttonやtextを置くことができ、頭の中にあるデザインをそのままviewに反映するのが非常に楽でした(というかそれが普通だと思っていました

元記事を表示

apkファイルに付与された証明書情報の確認方法

## はじめに
業務として証明書のエンティティについて確認する機会があり、方法を調べたので備忘録的に記事にしておきます。

## keytoolについて
JDKに含まれるユーティリティです。
暗号化鍵、証明書チェーン、キーストア等を管理します。
今回はこちらを使用して、証明書について確認しました。
以下、手順を記載していきます。

:::note
Android Studioを使用する方法もあるようです。
(というか、調べると真っ先にこちらがヒットします)
今回は業務上、Andoroid Studioを使用できなかったため、参考になりそうなリンクだけ記載しておきます。
https://developer.android.com/studio/publish/app-signing?hl=ja
:::

#### 1.JDKのダウンロードとインストール
Oracleの[ダウンロードページ](https://www.oracle.com/java/technologies/downloads/)から、任意のJava Runtime Environmentをダウンロードします。

![i

元記事を表示

Android向けにビルドしたUnityアプリをadbコマンドで起動する

# 用途

JenkinsなどのCIでUnityプロジェクトのビルドを行った後、そのアプリをAndroid端末に自動でインストールして自動で起動できれば、テストの自動化など様々な取り組みを行うことができます。

# adbコマンドでUnityアプリを起動する方法

以下のコマンドで起動できます。
“`adb shell am start -n <パッケージ名>/<アクティビティ名>“`

例:
“`shell:
adb shell am start -n com.HogeCompany.HogeProduct/com.unity3d.player.UnityPlayerActivity
“`

Unityプロジェクトを新しく作った時のデフォルトのメインアクティビティ名は “`com.unity3d.player.UnityPlayerActivity“` です。メインアクティビティを変更している場合は、コマンドで指定するアクティビティ名を変更してください。

# adbコマンドでUnityアプリを起動する時に引数を渡す方法

インテント引数を指定することで簡単にUnityア

元記事を表示

Androidのhttp requestで詰まったところ

公式 (https://developer.android.com/training/volley/simple?hl=ja#kotlin) のサンプルを使用したときに、”That didn’t work!”になってしまった。

調べたところ、api level 28 からhttp通信がデフォルトで無効になっているとのこと。
サンプルは http://www.google.com を指定していたので、通信できなかった。

解決法
– http:// -> https:// に変更
– AndroidManifest の application に android:usesCleartextTraffic=”true” を追記
– res/xml/network_security_config.xml を作成する

元記事を表示

N予備校 Android アプリで RxJava から Kotlin Flow に移行した話

#

[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1)チームでテックリードをしている鎌田です。

[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1)チームでは、非同期処理を RxJava から Kotlin Flow に移行しました。

本記事では、コード例を交えてこれまでの実装からどのように Kotlin Flow に移行したかの経緯、移行にあたってつまづいたポイントについてまとめます。

また、Kotlin Flow の細かい解説に関してはしませんのでご承知ください。

## 背景

これまで[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1)では、非同期処理ライ

元記事を表示

Partial Custom Tabsを使って、ボトムシートのようにChromeを呼び出す

`androidx.browser:browser:1.5.0`以降、Custom Tabsの機能としてPartial Custom Tabsというものが使えるようになっています。
これを使うと、ボトムシートのようにChrome(ブラウザ)を呼び出すことができるようになります。

https://android-developers.googleblog.com/2023/02/bringing-best-of-chrome-to-android-developers-and-users.html

使い方は、単にCustomTabsIntent.Builderの[`setInitialActivityHeightPx()`](https://developer.android.com/reference/android

元記事を表示

Android で VersionCatalogを使う

公式ドキュメントの [Central declaration of dependencies](https://docs.gradle.org/current/userguide/platforms.html#sub:central-declaration-of-dependencies)を AndroidStudioEEのMaterialDesign3テンプレートプロジェクトに適応してみたことの備忘記事です。

## 基本

### versionとlibrary
“`gradle
dependencyResolutionManagement {
~~
versionCatalogs {
create(“libs”) {
version(“coreKtx”,”1.7.0″)
library(“androidx-core-ktx”, “androidx.core”, “core-ktx”).versionRef(“coreKtx”)
}
}
}
“`

versionはライブライのバー

元記事を表示

【Android】加速度センサー【Kotlin】

# 加速度センサーとは
スマホには様々なセンサーがありますが、その中でも
スマホが**縦向きか横向きかを判断し 画面を回転させるため**や
**万歩計などに使われているセンサー**です

# 実装
kotlinでアプリ内に加速度センサーを使って端末の向きを取得しようと思います

“`
 class MainActivity : AppCompatActivity(), SensorEventListener {

private var sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
private val textView: TextView = findViewById(R.id.text_view)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.a

元記事を表示

Andoroid用ライブラリをC++ & CMakeで作る

# 概要
Android用ライブラリをC++とCMakeを使ってビルドする方法を説明します。

# ビルド方法
## C++ファイルを追加する
ライブラリ用C++コードファイルを追加します。
今回は簡単な加算するだけの関数を追加します。
“` cpp:ndk_library.h
#ifndef NDK_LIB_NDK_LIBRARY_H
#define NDK_LIB_NDK_LIBRARY_H

int ndk_lib_add(int a, int b);

#endif //NDK_LIB_NDK_LIBRARY_H
“`
“` cpp:ndk_library.cpp
#include “ndk_library.h”

int ndk_lib_add(int a, int b)
{
return a + b;
}
“`

## CMakeLists.txtを追加する
`CMakeLists.txt`を追加します。staticライブラリで作成します。

“` CMake:CMakeLists.txt
cmake_minimum_required(VERSION 3.

元記事を表示

【Android】エミュレーターで移動する位置情報の設定方法

今回は、エミュレーターで移動する位置情報の設定方法を紹介しようと思います。

まずは、一番右の縦に点が3つあるアイコンをクリックして設定を開きます。
![スクリーンショット 2023-04-02 21.08.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/20570592-ff74-0350-1a23-8a072e8a9684.png)

デフォルトで一番上がLocationだと思うのでこのままで大丈夫です。

上部にSingle points と Routesがあるので、 Routesをクリックします。

![スクリーンショット 2023-04-02 21.12.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/cd4a7da5-46c5-235c-d8f1-744a62b407bc.png)

地図上に目的地にしたい位置をクリックすると、この様になります。
右下の赤矢印が差して

元記事を表示

Material3のタブ選択位置を強制的に戻す【Kotlin】

## 内容
この記事ではMaterial3を利用した[タブ](https://m3.material.io/components/tabs/overview)をコード上で操作する方法を書いています。
今回は、QRスキャンと画像からQRを読み込む機能を入れたタブを作成しました。

このタブは下記のような動作を想定しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527236/92dc2401-c687-bebb-e1fc-8b97d7897507.png)
上記フローにおいて画像読み込みをクリック後に画像選択をキャンセルした場合に`スキャン`にタブ位置が戻るようにします。この設定を行わない場合`画像読み込み`にタブの選択状況

元記事を表示

ZXingで画像からQRコードを読み込む【Kotlin】

## 内容
Zxingを利用して端末内に保存された画像のQRコードを読み込む方法について書いています。
言語はKotlinです。この記事は該当部分を抜き出して掲載しています。

## コード
最初に画像を読み込むための権限設定を書きます。Android13以降では権限関連の設定が変わったようです。([公式ドキュメント](https://developer.android.com/about/versions/13/behavior-changes-13?hl=ja))今回は画像アクセスを行いたいのでManifest内に下記のように書きました。公式ドキュメントによるとAndroid13以降の画像取得には[写真選択ツール](https://developer.android.com/about/versions/13/features/photopicker?hl=ja)の使用を推奨していました。この仕組みを利用したことがないので時間があるときに試してみようと思います。

“`xml:AndroidManifest.xml
【Flutter】Flutter開発アプリでZendeskのチャットボット画面を表示してみた

## はじめに
私自身Zendeskについての知見等がなかったのですが
Flutterのアプリに対してZendeskのチャットボットが利用できるのか
調査する機会があり、試してみてAndroidの実装で少し詰まった点があったので残そうと思います!

## 開発環境
– MacOS: 12.4(Monterey)
– Androidstudio: 2021.2.1 patch1
– flutter: 3.7.6
– dart: 2.19.3

## Flutter用のパッケージがあるのかどうか
以下の公式Developerサイトを確認したのですが公式では
Android,iOSネイティブSDKの提供のみでFlutter用はなさそうでした。
https://developer.zendesk.com/documentation/zendesk-web-widget-sdks/sdks/android/getting_started/

これは自作するしかないかとも思ったのですが調べてみると既にパッケージで作成されているものが
ありましたのでこちらを調査。

### zendesk 2.0.

元記事を表示

Jetpack ComposeでCoil からGif画像取得してPalette APIで色抽出してみる

タイトル通りです。 普通にPNGとかなら楽勝ですが、Gifだとちょっと工夫が必要だったのでとうか

## Coilについて
### 概要
サーバURLから画像を取ってきて表示する ということが簡単にできるライブラリです。

### コード
静的な画像は単純なので、ここではgifで取ってみる
“`gradle
// implementation(“io.coil-kt:coil-compose:2.3.0”) // 通常はこっち
implementation(“io.coil-kt:coil-gif:2.3.0”)
“`
“`kotlin
@Composable
fun CoilOnlySample() {
val url = “https://play.pokemonshowdown.com/sprites/ani/pikachu.gif”
val context = LocalContext.current
val imageLoader = ImageLoader.Builder(context)
.components {

元記事を表示

OTHERカテゴリの最新記事