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

Android関連のことを調べてみた2022年04月14日
目次

unity Android でステータスバーの高さを取得する方法

![Screenshot_20220414-002120 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2123950/31cef996-a292-b221-7fd2-2b4968326813.png)

unityでAndroidにビルドする際、コンテンツが隠れないようにするため、ステータスバー(通知とか充電の部分)の高さを取得したいことがあります。
明確な記事がなかったので、その方法を記載しておきます。

# コード

“`.cs
#if !UNITY_EDITOR && UNITY_ANDROID
using (var unityPlayer = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”))
{
using (var activity = unityPlayer.GetStatic(“currentActivity”))
{
using (var

元記事を表示

NCMB Kotlin SDKを使ってカメラメモアプリを作る(その3 データとファイルの表示)

NCMBでは公式SDKとしてSwift/Objective-C/Kotlin/Java/Unity/JavaScript SDKを用意しています。また、それ以外にもコミュニティSDKとして、非公式ながらFlutter/React Native/Google Apps Script/C#/Ruby/Python/PHPなど幅広い言語向けにSDKが開発されています。

今回は公式SDKの一つ、Kotlin SDKを使ってカメラメモアプリを作ってみます。[前回はデータを保存する処理について解説しました](https://qiita.com/goofmint/items/dc335c55e6dd5c981c9a)ので、今回はその保存したデータの表示について解説します。

## 完成版のコード

作成したデモアプリのコードは[NCMBMania/Kotlin_Camera_Memo: Kotlin SDKを使ったカメラメモアプリです](https://github.com/NCMBMania/Kotlin_Camera_Memo)にアップロードしてあります。

## 一覧画面について

![Sc

元記事を表示

NCMB Kotlin SDKを使ってカメラメモアプリを作る(その2 ファイルアップロードとデータ保存)

NCMBでは公式SDKとしてSwift/Objective-C/Kotlin/Java/Unity/JavaScript SDKを用意しています。また、それ以外にもコミュニティSDKとして、非公式ながらFlutter/React Native/Google Apps Script/C#/Ruby/Python/PHPなど幅広い言語向けにSDKが開発されています。

今回は公式SDKの一つ、Kotlin SDKを使ってカメラメモアプリを作ってみます。[前回は画面の仕様とSDKの初期化について解説しました](https://qiita.com/goofmint/items/59f4c23d3245aae1388d)ので、今回はデータを保存する処理について解説します。

## 完成版のコード

作成したデモアプリのコードは[NCMBMania/Kotlin_Camera_Memo: Kotlin SDKを使ったカメラメモアプリです](https://github.com/NCMBMania/Kotlin_Camera_Memo)にアップロードしてあります。

## ナビゲーションバーの読み込

元記事を表示

NCMB Kotlin SDKを使ってカメラメモアプリを作る(その1 アプリの仕様とNCMBの初期化)

NCMBでは公式SDKとしてSwift/Objective-C/Kotlin/Java/Unity/JavaScript SDKを用意しています。また、それ以外にもコミュニティSDKとして、非公式ながらFlutter/React Native/Google Apps Script/C#/Ruby/Python/PHPなど幅広い言語向けにSDKが開発されています。

今回は公式SDKの一つ、Kotlin SDKを使ってカメラメモアプリを作ってみます。まず画面の仕様とSDKの初期化について解説します。

## 完成版のコード

作成したデモアプリのコードは[NCMBMania/Kotlin_Camera_Memo: Kotlin SDKを使ったカメラメモアプリです](https://github.com/NCMBMania/Kotlin_Camera_Memo)にアップロードしてあります。

## ベースについて

今回はKotlin + Jetpack Composeの組み合わせになっています。プロジェクトを作る際には Empty Compose Activity を選択してください。

元記事を表示

【Android】サービスの概要とサンプルコード

今回はバックグラウンドで処理を実行できるサービスについての説明とサンプルコードをご紹介したいと思います。

## 環境
Android Studio:2020.3.1 Patch 4
kotlin:1.5.31
targetSdkVersion:31
minSdkVersion:27

## サービスとは
サービスとは Activity が終了した状態でもバックグラウンドで処理を継続して実行することができるアプリコンポーネントです。
Activity と異なり UI(ユーザーインターフェース)は持ちません。
用途としてはバックグラウンドでのサーバーとの通信、ファイル入出力、音楽の再生などが挙げられます。

## サービスの種類
サービスには次の3種類があります。

#### バックグラウンドサービス
通常のサービスです。
Activityが終了した後も何らかの処理を継続的に行うことができます。
アプリが終了したときは処理を停止します。

#### フォアグラウンドサービス
ユーザーが存在を認識できるサービスです。
Activity が終了した後だけでなくアプリが終了した後も動作し続けま

元記事を表示

Android6.0 ApacheHTTPClientからURLConnectionへの置き換え

*自分が失敗したならあと10人は失敗しているだろう(ゴキブリ理論)*
タイトル対応中にmultipartで詰まった、ということで失敗備忘録です。
# multipartでテキストと画像データをPost
### 以下を参考に実装
https://qiita.com/informationsea/items/778d9525c3aaded73577
### 問題発生
サーバーへテキストと画像を送信できた。がしかし、テキスト内の日本語が文字化けしている。
1.日本語以外(英字/数字)は文字化けなし。
2.画像は壊れることなく送信できている。
### 原因
`DataOutputStream`への書き込みを直接`writeBytes`で実装しているため、
`AndroidOS`標準の文字コード(UTF-8以外のなにか(未調査))でエンコードされていた。
### 対応
`writeBytes`は使用せず、一度StringBuilderであつめてからByte変換するようにした。
“` java:RestUtility.java
// 以下内容は参考元より多少の改変をしています
final Str

元記事を表示

Unity 2021 で Assets/Plugins/Android/res フォルダが使えなくなった際の対応

# 環境
– macOS(Apple Silicon)
– Unity 2021.3.0f1

# 事象
– 通知用アイコンやアプリ名のローカライズファイルを `Assets/Plugins/Android/res` に配置していたら Unity 2021で Android ビルドできなくなった

# 対応方法
– AARファイルではなく、「Android ライブラリプロジェクト」 なるものを作成して対応しました
– https://docs.unity3d.com/ja/2022.1/Manual/AndroidAARPlugins.html の「AAR プラグイン」じゃなくて下部の方
– AARファイルを zip コマンドや Android Studioから生成するという方法を複数の先人の方々が書いてくださっていたのですが、何かが至らなかったのか自分の環境だと上手く動きませんでした?

# 手順
– `Assets/Plugins/Android` 直下に `CustomAndroidResource.androidlib` (フォルダ名は何でも大丈夫ですが、 `.andr

元記事を表示

Android EditTextで大文字英数字のみ入力可能とする

# はじめに
EditTextにて大文字の英字と数字のみ入力可能としたかったので、android:inputTypeで良いものがないかを探していました。
`textEmailAddress` `textUri`等は日本語も入力できてしまうのでダメでした。

結論、色々試したところ`textVisiblePassword`を使うとIMEから日本語がなくなったためこれを使用しました。
また、大文字を強制したいため`textCapCharacters`も追加し、android:digitsの指定も行いました。

IMEを開いた時点で大文字入力モードとなっており、小文字は入力できません。
# コード

“`xml
【メモ】Kotlinのクラスと継承

## はじめに
改めて継承などについて学んだので、かなりコンパクトにまとめました。
※間違っている部分があれば指摘していただけますと幸いです。

## 用語の概要

– クラス階層
– クラスが親と子の階層構造で構成されている配置のこと
– 階層図は通常親が子の上に表示するように描かれる
– 子・サブクラス
– 階層構造で他のクラスの下にある全てのクラス
– 親・スーパークラス・基底クラス
– 1つ以上の子クラスを持つ全てのクラス
– ルート・トップレベルクラス
– クラス階層の最上位(またはルート)にあるクラス
– 継承
– 子クラスが親クラスの全てのプロパティとメソッドを含む(継承する)ことを意味する
– これによりコードの共有や再利用が可能になる

## 抽象クラスとは?

– 完全に実装されていないため、インスタンス化出来ないクラスのこと
– スケッチのようなもの
– スケッチ(抽象クラス)を使用して、実際のオブジェクトインスタンスをビルドするための設計図(クラス)を作成する
– 宣言は`abstract`で始める

元記事を表示

Unidirectinal data flow をまとめる

# 前書き

jetpack composeには、「状態」をうまく扱う仕組みが整っている。この仕組みを構築している思想に単方向データフロー(Unidirectinal data flow)がある。ドキュメントの[状態ホイスティングのところ](https://developer.android.com/jetpack/compose/state)にもさっくり書いてある。
PureなUnidirectinal data flow を知りたくなったので(そんなものがあるのかも含め)、以下参考に超シンプルに実装した。

[Unidirectional data flow on Android using Kotlin: The blog post](https://proandroiddev.com/unidirectional-data-flow-on-android-the-blog-post-part-1-cadcf88c72f5)
(part1 ~ part3)

# Unidirectinal data flow

Unidirectional data flowとはざっくりいう

元記事を表示

工場勤務だった私がAndroidエンジニアになるために参考にした教材

# 初めに
今回は工場勤務だった私が、半年の勉強期間でAndroidエンジニア目指した際に、使った本を記事にします
今、Androidエンジニアを目指していたり、これからの選択肢にAndroidエンジニアという道がある人の参考になれば幸いです。

# 勉強の際に使った教材
まずは、Androidプログラミングの基礎を学ぶためにこの本を選びました。
(Androidエンジニアの先輩にオススメして頂きました)
初心者からAndroidプログラミングを学ぶ上でまず必要だったものが、
**言語を覚えること** です。
Androidアプリ制作に必要なソフトである Android StudioをPCに入れ
「いざ!アプリ作ってやるぞー!」と立ち上げてみても何がなんだかさっぱりわかりません。
また、言語を覚えてもコードの書き方がわからない なんてこともありました。

ですので、以下のふたつの本を主な資料として勉強しました

https://www.amazon.co.jp/%E4%BD%9C%E3%82%8C%E3%81%B0%E3%82%8F%E3%81%8B%E3%82%8B-Androi

元記事を表示

【Android】WebViewで表示されるIframe動画をフルスクリーンで表示する方法

# 概要

WebViewでYouTube動画をフルスクリーンで表示する方法をまとめる

# アプリに必要な権限をリクエストする

“`xml:AndroidManifest.xml




“`

“`ts:src/main/java/com/example/online_sekkyaku_tablet/MainActivity.kt

class MainActivity : AppCompatActivity() {

元記事を表示

M1環境でFlutterアプリを動かすまで

# はじめに
Mac M1環境でFlutterアプリを動かすまでの流れを書き留めたものです。
2022年4月現在の情報です。動かそうとしたらUIが変わってたりすることがあるかもしれません。

# この記事のゴール
– AndroidStudioを使用して、Androidエミュレーター上でFlutterアプリを起動させる
– 今回はXCodeはインストールしなくて大丈夫です。
– FlutterSDKに[fvm](https://fvm.app/)を使用する
– [asdf](https://github.com/asdf-vm/asdf)という手もありますが、fvmを使うことにします。

# 大まかな流れ
– Android Studioをインストール・初期設定をする
– [fvm](https://fvm.app/)をインストールする
– Flutterアプリを作る
– Android Studioでアプリ動かす

# Android Studioをインストール・初期設定をする
Android Studioをインストールした上で、Flutter向けに初期設定をしていき

元記事を表示

Android === Ubuntu w/ SSH [ Termux @ Github (@ F-droid ) ]

#### 概要
Androidにターミナル環境を実装できるアプリ[Termux](https://termux.com/)を使い、OpenSSHで接続
月額もかからずポータブルなサーバーとして使えます。

#### 手順

::: note warn
Andoid === Local
:::

TermuxのAPKをGithubからダウンロード もしくは F-Droid*からダウンロード
  * オープンソースのAndroid用レポジトリ
ターミナル用にキーボードアプリダウンロード* もしくは Samsungならキーボードのショートカットを表示するとビルトイン使用可
  * Hacker’s Keyboardなどがよく使われる
フォルダ設定、パッケージのアップデート
““
$ termux-setup-storage
$ pkg update
$ pkg upgrade
““
ユーザー設定します
““
& pkg install openssh
$ sshd
$ ip -4 a
$ id
$ passwd
““

::: note warn
Ubuntu === L

元記事を表示

【初心者応援】新人エンジニア向け、覚えておくといいこと4選

# 初めに
今回、新人プログラマ応援イベントが開催されているので新人のAndroidエンジニア向けの覚えておくと役立つこと4選を書いていこうと思います。

### 1つ目: 検索能力
まずは、最重要である検索能力です。
プログラムを勉強してきた方、してこなかった方問わずこれは絶対に覚えておいた方がいいことです。
では、どうやって検索能力を身につけていくかです。
重要なのは2点あります。
* 検索時に英語を使うこと
* 無駄な文字を省く

まず、検索時に英語を使うことについてです。
なぜ英語を使って検索をかけることを勧めるかというと、エンジニア人口が一気に広がり該当の記事が見つけやすくなるからです。
日本語で調べると、文字での説明がありとてもわかりやすいですが幅が狭まります。
重要なのはコードなので英語圏まで手を伸ばして検索をした方が自分が探している問題の解決策を見つけやすくなります。
`stackOverFlow`等がおすすめです

次に無駄な文字を省くことです。
Google等の検索ロジックは検索にかけられた文字がサイト内に存在しているかどうかで探しています。
そのため、無駄な文字が

元記事を表示

Flutter アプリのリリース手順(Google Play ストア編)

## はじめに
Flutterでのアプリ開発が一区切りしたので、GooglePlayストアとAppleStoreの両方にリリースしたのだが、その際にいつもの様に色々と手こずったので、誰かの参考になればと思い(自分のためにも)メモを残す。

## 環境
【PC】
  MacBook Air (M1, 2020)

【各SWバージョン】
 ・macOS Big Sur 11.6.1
 ・Flutter 2.5.3 (dart 2.14.4)
 ・Xcode 13.1
 ・Cocoapods 1.11.2
 ・VScode(AplleSilicon) 1.62.2

## メモ内容

① GooglePlayストアへのリリースまでの準備
② GooglePlayストアへのリリースおよびテスト

## ① GooglePlayストアへのリリースまでの準備
以下の手順でリリースします!
 ※前提としてGoogle Playへのアカウント登録が完了していること。

・アップロード用の署名鍵の生成
・アプリ名の変更
・ビルド前の設定追記
・Flutterアプリのビルド
・Google Play

元記事を表示

ConstraintLayoutを使ったタブレットとスマホに対応したレイアウトの書き方

# ConstraintLayoutを使ったタブレットとスマホに対応したレイアウトの書き方

基本的なConstraintLayoutのViewの配置方法としてAndroidにはdpという考え方があります。
dpを使った配置法はどのような端末でも同じ大きさで表示するという考え方です。
これはこれで有用なのですが、
タブレットとスマホ両方に適用できるレイアウトという方針では、タブレットにはスカスカに、スマホにはぎゅうぎゅうに表示されてしまい、いい感じのレイアウトができません。

そこで、レスポンシブUIの設計の為に、
`Menuの表示処理をMenuHostとMenuProviderに置き換える

Activity や Fragment で Menu を表示させる API に `MenuHost` と `MenuProvider` の新しい API が登場しました。
[Fragment 1.5.0-alpha05](https://developer.android.com/jetpack/androidx/releases/fragment#1.5.0-alpha05) で `setHasOptionsMenu()` が deprecated になり、この新しい API への移行が案内されていたので、新しい API について書いていこうと思います。
  

– `androidx.activity:activity`(or `androidx.activity:activity-ktx`) のバージョンが [1.4.0](https://developer.android.com/jetpack/androidx/releases/activity#1.4.0?hl=en) 以降
– `androidx.core:core` (or `androidx.core:core-kt

元記事を表示

Androidのデフォルトアプリ選択をリクエストする

Android端末でFirefoxをデフォルトブラウザにしていると、Chromeが嫉妬して、以下のようなダイアログが表示されます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/4dfcfea4-d12a-1480-b865-c8c863b6d1fa.png)

アプリから自分をデフォルトアプリにしてくれとリクエストすることができるのか!
ということでやり方を調べました。

# RoleManager

結論からいうと、RoleManagerを使います。
https://developer.android.com/reference/android/app/role/RoleManager

API Level 29です。Android10以上で使える機能ですね。

# デフォルトブラウザアプリの設定をリクエストする

Chromeと同様にブラウザアプリをつくって、自分をデフォルトアプリにしてくれるようにリクエストしてみましょう。

## ブラウザアプリを作る

デフォルトブラウザをリクエ

元記事を表示

Dependency injection(DI)とは?

## はじめに
[Dependency injection in Android](https://developer.android.com/training/dependency-injection)を読んで、個人的にかなりコンパクトにまとめました。
※間違っている部分があれば指摘していただけますと幸いです。

## Dependency injection(DI)とは?
クラスが必要なオブジェクトを取得するには、次の3つの方法がある

1. クラス自身が必要な依存関係を構築する
1. 別の場所から入手する
1. **パラメーターとして受け取る** ⇐これがDI

### DIを使わない場合(上記の1に相当)

Carクラスはコード内でEngineのインスタンスを独自に作成して初期化する

“` kotlin:1. クラス自身が必要な依存関係を構築する
class Car {

private val engine = Engine()

fun start() {
engine.start()
}
}

fun main(args: A

元記事を表示

OTHERカテゴリの最新記事