- 1. Universal Android Music Player(UAMP)のカスタマイズ (音源の変更 2/2)
- 2. Recyclerviewの実装をしてみた。+ 要素の一番上、一番下を判定を行う
- 3. Androidエミュレータで、ホーム画面からSettingしようとするとブラックアウトする問題
- 4. LayoutInflater.inflateのattachToRootとは何か?
- 5. DatePickerで生年月日を入力できるようにする
- 6. ListView✖️ArrayAdapter✖️RadioButtonでアンケートを作成!
- 7. 【Android】 ToggleButtonのカスタマイズ
- 8. アプリリリースしました 「ツケ台帳」
- 9. ArcticFox(AGP7.0)マイグレーション時にCircleCIで発生する java.lang.NoSuchMethodError: ‘void org.apache.commons.compress.archivers.zip.ZipFile.(java.nio.channels.SeekableByteChannel)’ について
- 10. Navigationのセットアップ&使い方(Kotlin)
- 11. 【Firebase】別アカウント管理のGoogle Playと接続する方法
- 12. AndroidでHiltをつかう
- 13. Android(Termux)でプログラミング【code-server】
- 14. compileSdk・minSdk・targetSdkの違い(Android)
- 15. Flutter調べ備忘録
- 16. Universal Android Music Player(UAMP)のカスタマイズ (音源の変更 1/2)
- 17. 画面遷移と値受け渡し
- 18. 「Android Gradle plugin requires Java 11 to run.」エラーの対処法
- 19. Androidブラウザ(実機 or エミュレータ)からローカルサーバ(localhost)にアクセスする
- 20. Unity HubがインストールしたAndroid SDKでAPI levelが不足する場合 (Windows)
Universal Android Music Player(UAMP)のカスタマイズ (音源の変更 2/2)
#はじめに
Android用アプリのプログラミングを学ぶため、Googleが公開しているサンプルコード **Universal Android Music Player(UAMP)**をカスタマイズしてみます。
まずは、端末(アプリを実行するスマートフォンなど)内の好きな音楽ファイルを再生するように変更します。[Universal Android Music Player(UAMP)のカスタマイズ (1/2)](https://qiita.com/Jin_Kubota/items/fc94ecd12bc069a58926)で、オリジナルコードでの楽曲カタログ取得からプレイヤーへの設定までの処理の流れを確認し、音源を端末内の音楽ファイルへ変更するカスタマイズの方法を検討しました。
今回は、コードの変更について記載します。#環境
####PC
MacBook Pro 16
2.3 GHz 8コアIntel Core i9
16 GB 2667 MHz DDR4
macOS Big Sur ver.11.5.2####開発用SW
Android Studio 4.2.1##
Recyclerviewの実装をしてみた。+ 要素の一番上、一番下を判定を行う
ListViewばっかり使用していましたが、置き換えるついでに色々やってみました。
## 導入
build.gradleに以下を。(1.2.1は記事を書いている当時の最新なので読み替えてください。)
参考:[Recyclerview](https://developer.android.com/jetpack/androidx/releases/recyclerview?hl=ja)“` build.gradle
dependencies {
implementation ‘androidx.recyclerview:recyclerview:1.2.1’
}
“`## 実装
とりあえずザーッと。
(細かい部分はよしなに・・・)#### 表示する要素のレイアウト
各要素は全て以下を基準に作られます。“` item.xml
Androidエミュレータで、ホーム画面からSettingしようとするとブラックアウトする問題 # 目次
[1.現象](#1現象)
[2.解決法](#2解決法)# 1.現象
エミュレータのホーム画面のSettingsから設定しようとするとブラックアウトしてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/dd482a67-ef0a-638f-e548-8d889325a23c.png)# 2.解決法
Android Studioの右上にあるAVD Managerを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/698ad14b-ef09-b864-9016-58036cacd330.png)
直したいエミュレータのプルダウンからWipe Dataを選択し、Yesを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0
LayoutInflater.inflateのattachToRootとは何か?
##はじめに
Fragment等を扱うときなどにおまじないとして書いていたLayoutInflaterのinflateメソッドの第3引数attachToRootの意味がよくわからなかったので調べてみました。##LayoutInflaterについて
LayoutInflaterとはxmlをViewオブジェクトに変換するものです。ドキュメントを確認したところLayoutInflater内のinflateメソッドは色々種類がありましたが、多分一番多く使われているのが“`kotlin
open fun inflate(resource: Int, root: ViewGroup?, attachToRoot: Boolean): View!
“`
のタイプだと思います。これの第一引数ではViewに変換したいlayoutのxmlを指定します。第二引数についてはドキュメントの説明をdeepLで翻訳すると
>ViewGroup。オプションで、生成された階層の親となるビュー(attachToRootがtrueの場合)、または単に、返された階層のルートのLayoutParams値のセットを提
DatePickerで生年月日を入力できるようにする
# 前提条件
SDKバージョン: 30
Androidバージョン: 9.0# この記事を書こうと思ったきっかけ
Android DatePickerで調べるとほぼ出てくるのがカレンダー形式のもので私は結構困りました。日付を選択する際は別にカレンダー形式でも問題ないと思うのですが、生年月日の選択の場合はスピナー、あるいはドラムロールと言われるタイプの形式の方が遥かに選択が楽です。
参考:[【ダメなUIについて】androidの生年月日の入力フォームで使ってはいけないUIデザイン
](https://satoriku.com/android-uidesign/)# 作りたいもの
こんな感じで、EditTextをクリックしたら生年月日を選択するためのスピナーが表示され、ユーザーが選択すると、その結果がEditTextに反映され
ListView✖️ArrayAdapter✖️RadioButtonでアンケートを作成!
# 前提条件
SDKバージョン: 30
Androidバージョン: 9.0# 作りたいもの
この画像の「からだの症状」という部分ですが、「目が疲れる」などのタイトルの横にラジオボタンが5つ並んでいます。そして同じような構造が下にいくつも繰り返されています。このように同じ構造のアイテムを繰り返すときには、ListView✖️ArrayAdapterが良いです。# 1. 繰り返したいアイテムを作成
こんな感じでリストアイテムを作成します。
コードはこんな感じです。
【Android】 ToggleButtonのカスタマイズ
# はじめに
ToggleButtonのアイコンと背景をカスタマイズする方法。
全体の流れとしては、まず前景画像と背景のレイアウトを`toggle.xml`で記述し、次にそれをToggleButtonのbackgroundに指定する。# drawable
`state_checked`でON/OFFを切り替える。`layer-list`内に背景とbitmapを記述。“`toggle.xml
<
アプリリリースしました 「ツケ台帳」
play storeにて、私が初めて開発したアプリ
[ツケ台帳](https://play.google.com/store/apps/details?id=com.chelak.tsuke_daicho)をリリースしました。
AndroidKotlinアプリAndroidStudioアプリ開発ArcticFox(AGP7.0)マイグレーション時にCircleCIで発生する java.lang.NoSuchMethodError: ‘void org.apache.commons.compress.archivers.zip.ZipFile.
(java.nio.channels.SeekableByteChannel)’ について CircleCIから提供されているAndroidのDockerイメージを使用している場合、使われるbuildToolsVersionの一覧が`dockerfiles`に書かれているみたいです。
例えば api-30を使う場合、?
https://github.com/CircleCI-Public/circleci-dockerfiles/blob/master/android/images/api-30/Dockerfile#L183
“`yml
RUN sdkmanager \
“build-tools;27.0.0” \
“build-tools;27.0.1” \
“build-tools;27.0.2” \
“build-tools;27.0.3″ \
# 28.0.0 is failing to download from Google for some reason
#”build-tools;28.0.0” \
“build-tools;28.0.1” \
“build-tools;28.0.2” \
“build-tools
Navigationのセットアップ&使い方(Kotlin)
## はじめに
Navigationのセットアップ方法と使い方を紹介します。
## 「Navigation」とは?
Googleが提供しているJetpackのコンポーネントです。
フラグメント間の遷移など、様々なナビゲーションの実装に役立ちます。## 環境
– OS:macOS Big Sur 11.5.2
– Android Studio:Arctic Fox | 2020.3.1
– Kotlin:1.5.21
– Gradle:7.0.2
– Gradle plugin:7.0.0
– Navigation:2.3.5## セットアップ
### Navigationのインストール
ルート直下の「build.gradle」にNavigationのバージョンを追加します。
別の記事で紹介する予定ですが、Navigationと併用して「Safe Args」というGradleプラグインを使うことが多いです。
そのため、先にNavigationのバージョンを定数化しています。“`diff_groovy:/build.gradle
buildscript {
【Firebase】別アカウント管理のGoogle Playと接続する方法
# TL;DR
Google Playのオーナー or 管理者アカウントユーザーを、Firebaseのプロジェクトに「オーナー」としてメンバー追加して、そのユーザーに接続してもらえばOK# はじめに
FirebaseのプロジェクトはGoogle Playと接続できます。[プロジェクト設定] > [統合]の Google Play の箇所
接続すると、Google Playの収益データがFirebase上から利用できたり、Firebase App DistributionのAndroid App Bundle(aab)配信を使えるようになったりします。:sunglasses:
[【Firebaseヘルプ】Google Play を Firebase にリンクする](https://support.google.com/fi
AndroidでHiltをつかう
## Android Studioでの設定
基本的にはチュートリアルの通りなのだが、少し違っているのでとても迷う。
https://developer.android.com/training/dependency-injection/hilt-android
以下に設定すれば通る
## build.gradle
“`
dependencies {
・・・
classpath ‘com.google.dagger:hilt-android-gradle-plugin:2.38.1’
classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21”
}
“`
## app/build.gradle
“`
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-kapt’
apply plugin: ‘dagger.hilt.android.plugin’
・・・
dependencies {
・・・
Android(Termux)でプログラミング【code-server】
# Termuxを公式サイトからインストール
https://f-droid.org/packages/com.termux/Google Play ストアのTermuxはバージョンが古いので、公式サイトからダウンロードしたapkを開いて、インストールしてください。
# TermuxにUbuntuをインストール
https://github.com/termux/proot-distro起動用のシェルスクリプトを作成しておくと良いでしょう。
# code-serverをインストール、起動
https://github.com/cdr/code-serverキーボードはCodeBoardがおすすめです。
https://play.google.com/store/apps/details?id=com.gazlaws.codeboard# 端末でテザリングする、外部から接続する場合
テザリングする場合は、まずテザリングをオンにします。
テザリングせずWi-Fiに接続する場合は、Wi-Fiに接続してから、`ip -4 a`コマンドでローカルipを確認します。次に、c
compileSdk・minSdk・targetSdkの違い(Android)
## はじめに
`compileSdkVersion` ・ `minSdkVersion` ・ `targetSdkVersion` の違いがいつもわからなくなるため、まとめることにします。
## 注意
ここからは末尾の `Version` を省略します。
## 各プロパティの違い
各プロパティの違いを紹介します。
### compileSdk
> compileSdkVersion specifies the Android API level Gradle should use to compile your app. This means your app can use the API features included in this API level and lower.
>
> compileSdkVersionは、Gradleがアプリをコンパイルする際に使用するAndroid APIレベルを指定します。これは、アプリがこのAPIレベル以下に含まれるAPI機能を使用できることを意味します。引用: https://developer.android.c
Flutter調べ備忘録
## この記事は?
Flutter調べたことメモ。
全体像の俯瞰用にシンプルにまとめ。
(気が向いたら随時更新)## 記載範囲は?
– 言語の特徴
– UIに関して
– アーキテクチャ
– メリデメ## 言語の特徴
### dart
– オブジェクト指向
– 静的型付けJAVAライク。
## UIに関して
### 大きく2種類
#### material
Android、MaterialDesignのUI。
[Material Components widgets](https://flutter.dev/docs/development/ui/widgets/material)![スクリーンショット 2021-08-19 043125.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700755/220a2fee-92cf-494c-a920-6ffe379634d5.png)
#### Cupertino
iOSなUI。 iOSでよく見るUI部品は大体ある。
[Cupertino
Universal Android Music Player(UAMP)のカスタマイズ (音源の変更 1/2)
#はじめに
Android用アプリのプログラミングを学ぶため、Googleが公開しているサンプルコード **Universal Android Music Player(UAMP)**をカスタマイズしてみます。
まずは、端末(アプリを実行するスマートフォンなど)内の好きな音楽ファイルを再生するように変更します。#環境
####PC
MacBook Pro 16
2.3 GHz 8コアIntel Core i9
16 GB 2667 MHz DDR4
macOS Big Sur ver.11.5.2####開発用SW
Android Studio 4.2.1####Target Device (Virtual Device)
Category: Phone
Name: Pixcel 2
Resolution: 1080×1920 420bpi
API Level: 28
Android: 9.0
CPU: x86#Universal Android Music Player (UAMP)
###UAMP概要
[UAMP](https://github.com/andro
画面遷移と値受け渡し
##はじめに
今回は画面遷移と値の受け渡しについて実装していきます。![スクリーンショット 2021-08-18 22.42.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704865/f5be9147-150a-4724-907f-38149cadc727.png)
リストの各行に格納されている商品をアップすると画面が遷移し、
タップした商品が遷移先の画面に表示する機能を実装していきます。
![スクリーンショット 2021-08-18 22.45.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704865/91c0bd3d-c309-3094-3482-f0f26a7901b8.png)##実装
“`Kotlin:string.xml
画面遷移サンプル
「Android Gradle plugin requires Java 11 to run.」エラーの対処法 アプリを実行すると以下のエラーが発生しました。
“`
An exception occurred applying plugin request [id: ‘com.android.application’]
> Failed to apply plugin ‘com.android.internal.application’.
> Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
You can try some of the following options:
– changing the IDE settings.
– changing the JAVA_HOME environment variable.
– changing `org.gradle.java.home` in `gradle.properties`.
“`# 対処法
`Java 11`を選択することで解決します
## `And
Androidブラウザ(実機 or エミュレータ)からローカルサーバ(localhost)にアクセスする
# はじめに
MacのPCにローカルサーバでnode.jsのアプリをnode appで実行している場合に、実機の端末からアクセスする方法です。
node.jsの場合はポートが3000がデフォルトです。# 端末からアクセス
実機もPCももちろん同じネットワークに接続します。
“`
http://localhost:3000/
“`このようにしてPCからであればアクセスできますが、実機やエミュレータでは、何もしないとエラーとなります。
“`
http://127.0.0.1:3000/
“`これも同じくエラーです。
エミュレータと実機でアクセス方法が違います。
## エミュレータの場合
“`
http://10.0.2,2:3000/
“`これでアクセスできます
## 実機の場合
まずPCでchromeブラウザを立ち上げて下記のアドレスにアクセスします。
“`
chrome://inspect/#devices
“`![スクリーンショット 2021-08-18 19.02.58.png](https://qiita-image-sto
Unity HubがインストールしたAndroid SDKでAPI levelが不足する場合 (Windows)
# 課題
プロジェクトが要求するAPI levelの`platform-tools`がUnityのビルトインSDKに含まれていない場合、最終的に`UnityException: Required API level ~.`というエラーになります。# 解決例
## 環境
– Windows 10
– Unity 2020.3.16f1 (LTS)
– Target API Level: Android 11.0 (API level 30)## 対処
– Unityの`Preference`で、ビルトインSDKのインストール先を特定します。
– `C:\Program Files\Unity\Hub\Editor\2020.3.16f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK`
– 管理者権限のあるコマンドプロンプトを開き、カレントディレクトリを`SDK`フォルダに移動して、`tools\bin\sdkmanager “platform-tools” “platforms;android-30″`を実行します。