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

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

Vue3ベースのIonic-Vue(β)で実機デバッグするまで。

Vue3が発表されてIonic-Vueがβで公開されて少し経ったのでどんなもんか触ってみました。
諸事情あってWindowsで開発環境を構築していますがMacでもほぼ差異なく動きました

ionic/cliをglobalにinstallします。

“`shell
npm install -g @ionic/cli@testing
“`

my-appはプロジェクト名なので任意に

“`shell
ionic start my-app tabs –type vue –tag vue-beta
“`

1分程待つと

“`shell
Your Ionic app is ready! Follow these next steps:

– Go to your new project: cd ./vocbook
– Run ionic serve within the app directory to see your app in the browser
– Run ionic capacitor add to add a native iOS or Android proj

元記事を表示

Firebase Cloud Messagingでトークンの取得方法が変わっていた

タイトルのとおり。
[com.google.firebase:firebase-messaging.20.3.0](https://firebase.google.com/support/release-notes/android#messaging_v20-3-0) からは `FirebaseInstanceId` クラスの `getInstanceId` 関数からではなく、`FirebaseMessaging` クラスの `getToken` 関数から取得するようになったようだ。

“`kotlin
// 1. リスナーで非同期的に取得するやり方
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (!task.isSuccessful) {
return@OnCompleteListener
}

val token = task.result
}

// 2. kotlinx-coroutines-play-servicesを使ってコルーチン内

元記事を表示

#34 Kotlin Koans Properties/Delegates examples 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Properties/Delegates examplesの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 Delegated Properties/Lazy

**[Delegated Properties](https://kotlinlang.org/docs/reference/delegated-properties.html)**
`val/var : by `で表現される、プロパティの参照方法です。

以下でリファレンスの例を見てみましょう。

“`kotlin:Delegates_example
import kotlin.reflect.KProperty

class Example {
v

元記事を表示

Android Studio で実行しようとするとCould not start AVD

Android Studio でプログラムを書いていざ実行、デバッグ実行しようとしたら、次のエラーが出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184382/b5b79c39-ad17-2bee-c0f4-fc11b6d77712.png)

AVD Managerを開くと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184382/9b46a567-c7fa-1f2c-ab0f-270a2e9a58d5.png)

`VT-x is disabled in BIOS.` と表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184382/5d223415-f351-6ba5-1d6b-ed6daa4dd2ce.png)

一旦、OSを終了してBIOS起動し、バー

元記事を表示

Android Studio を日本語化する方法

まず、Android Studio を起動します。

`File`メニューから`Settings`を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184382/4d2ffcb6-632e-95f8-eebd-3e856b362c30.png)

検索欄にJapaneseを入れると、`Japanese Language Pack EAP`が出てくるのでこれを`Install`します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184382/6bd7c577-0dc6-12fc-6609-82094aecac97.png)

`Restart IDE`でAndroid Studioを再起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184382/8e202000-74

元記事を表示

Androidで画像解析をしてみる(Pytorch MobileとKotlinを利用)

# Pytorch Mobileを利用した画像解析アプリケーション
– resnet
– pytorch mobile
– camerax

を利用して、撮影した画像に対して画像解析を行うアプリケーションを作成しました。

1.起動時

2.写真撮影

3.画像解析
LiveDataのpostValueはすべてのデータが通知されるわけではないということを理解して使っていますか?

言いたいことはタイトルの通りです。LiveDataのpostValueを使った場合、一部データが通知されない可能性があります。その挙動を理解して使っていれば問題ありませんが、意識しないで使っていると問題が起こるかもというお話です。

要約すると、observerの`onChanged()`がコールされるまでの間にキューがあるわけではないので、読み出される前に次のデータがpostされると、最後の値しか通知されません。データをUIに反映させるという目的であれば不必要な更新を発生させないので、むしろ好都合というか、そういう意図で作られているのだとは思います。しかし、LiveDataをそれ以外の目的で利用しているなどで、途中のデータも通知されないと困るという用途の場合は注意が必要です。

特に意識していなかった場合は、途中のデータが失われると困る用途で使っていないか再度確認しましょう。
問題がある場合は、LiveDataではなく、RxJavaを使うなど他のライブラリを使うのが良いでしょう。

## 理由詳細

postValueの実装を覗いてみましょう

[LiveData.java](htt

元記事を表示

【備忘録】http通信関連(okhttp3)

#通信する
スマホやタブレットでアプリを動かす以上、避けて通れないのが通信。
今回はhttp通信についてまとめる。
流石に色々なライブラリがあるようだが、今回はOkhttp3を使った。

#gradleからインポート
まずはアプリでOkhttp3が使えるようにする。
そのためにbuild.gradle(モジュール:app)に追記する。
バージョンはお好きなものを。
追記したら忘れずに同期させよう。

“`gradle:build.gradle
dependencies {
implementation fileTree(dir: “libs”, include: [“*.jar”])
implementation ‘com.android.support:appcompat-v7:28.0.0’
implementation ‘com.android.support.constraint:constraint-layout:2.0.2’
implementation ‘com.squareup.okhttp3:okhttp:4.8.0’ //←この1

元記事を表示

#33 Kotlin Koans Properties/Lazy property 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Properties/Lazy propertyの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 !!演算子

null許容型の変数の後ろにつけることで、
強制的に、**非null許容型に変換します**。

#3 Properties/Lazy propertyの解説

[Kotlin Koans Properties/Lazy property](https://play.kotlinlang.org/koans/Properties/Lazy%20property/Task.kt)の解説です。
随時本サイトの内容を引用させていただきます。

本文とコードを見てみましょう。

> Add a custom getter to make the ‘lazy’ val really

元記事を表示

【備忘録】SQLite関連

#はじめに
アプリの内部にデータを保存する場合、通常SQLite3を使用すると思われる。
筆者がSQLite3に感じているメリットはオフラインでも使用できる点だ。
通常のアプリならば、Webに繋がっている前提で話ができるため、
内部的にデータを保存する必要なさそうだ。
それならばWebアプリでいい。
しかし当方のようなネットワーク環境を自由に広げられない場所では
内部データで駆動できるのはとてもありがたい。

#SQLiteOpenHelper
SQLiteを操作するには[SQLiteOpenHelper](https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper)を使用するといいらしい。
アプリ内の各アクティビティで使用することを考えると、外だししてしまった方が賢いような気がするので、こんな感じに書いてみた。

“`java:SqlConnectionHelper.java
package sample.pack;

import android.content.Context;

元記事を表示

MPAndroidChart y軸に単位を表示する方法

MPAndroidChartでy軸に単位を表示する方法を紹介したいと思います。
あと自分が忘れないために記録用として。

1.まずは、ValueFormatterクラスを継承したクラス作成し、getFormattedValueメソッドをオーバーライドする。

class MyYAxisValueFormatter : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
//valueはy軸の目盛りの値。最後にString型にして、自分の付けたい単位足す。
return value.toInt().toString() + “冊”
}
}

2.chartのaxisLeft.Formatterに先ほど作ったクラスのインスタンスを代入する。

chart.axisLeft.valueFormatter = MyYAxisValueFormatter()

実行すると….
![Scree

元記事を表示

#32 Kotlin Koans Properties/Properties 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Properties/Propertiesの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 セッター・ゲッター

[#6 Kotlin Koans Introduction/Data classes 解説](https://qiita.com/G-o/items/0a35c3ecfecaeb733993)ではセッター・ゲッターが省略できることをお伝えしましたが、
今回は省略しなかった際のコードを以下に記します。

“`kotlin:exampleSetterGetter

//セッター・ゲッターを省略したコード。
fun usePersonInfo(){
val p = Person()
p.name = “名前”
p.age = 20
val n = p.name

元記事を表示

MPAndroidChart 設定

AndroidMPChartで最初の設定するメソッドの意味を書きます。
今回は棒グラフだけ。

//拡大縮小ができないようにする。
chart.setPinchZoom(false)

//背景の色を設定しない。
chart.setDrawGridBackground(false)

 //グラフの影をつけない。
chart.setDrawBarShadow(false)

//左側のy軸の設定
//最大値
chart.axisLeft.axisMaximum = 50F
//最小値
chart.axisLeft.axisMinimum = 0F
//y軸のメモリの数。値が多ければ、目盛りが細かくなる。
chart.axisLeft.labelCount = 10

//x軸の設定
//x軸の単位(今回は月ごと)

元記事を表示

【超初心者向け】Android入門 RecyclerView編

# はじめに
今回はReyclerViewというものを紹介していきます。
初心者の方からするとRecyclerViewとはなんぞや!となってしまいますが、簡単に説明するとリストを表示するためのViewです。

# 記事の対象
– Androidアプリ開発初心者
– 前回の記事を読んだ方
– Androidをこよなく愛する方

# RecyclerViewとは
[RecyclerViewでリストを作成する](https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=ja)

Androidアプリ開発の公式のリファレンス、Android Developersを見ると何やら難しいことが書いてありますね。

簡単な説明は以下のとおり
>大規模なデータセット(または頻繁に変更されるデータ)に基づく要素のスクロール リストをアプリで表示する必要がある場合、このページで説明するように RecyclerView を使用する必要があります。

RecyclerViewとはスクロール可能なリストを表示してくれます。
前回のLi

元記事を表示

AndroidのWebViewでダークモード対応する方法

アプリのダークモード(ダークテーマ)対応にて、WebViewの中身についてはCSSの prefers-color-scheme メディア特性を使って対応しておくだけでOKだろうと思っていました。しかし、簡単にはいかず、調べてもなかなか解決方法が見つからなかったので書きます。

結論だけ先に書くと androidx.webkit を使い、WebコンテンツのCSSを使うダークモードのON/OFFを設定します。これでAndroid 5(API Level 21)以上でダークモード対応を行うことができます。

※Android的にはダークテーマ・ライトテーマですね。書いた後に気づきました。m(__)m
https://developer.android.com/guide/topics/ui/look-and-feel/darktheme

# Webコンテンツのダークモード対応はCSSで行う

Webコンテンツのダークモード対応はCSSの [prefers-color-scheme](https://developer.mozilla.org/ja/docs/Web/CSS/@media/p

元記事を表示

【Android】ActionBarでハマったこと

# importが違った
`ActionBar bar = getSupportActionBar();`
で、赤い波線が出てエラーが出てしまっていた。
警告を読めばわかることだが、原因はimportしているActionBarが違っていたでした。

* NG

“`java
import android.app.ActionBar;
“`

* OK

“`java
import androidx.appcompat.app.ActionBar;
“`

# ActionBarの文字の色を変更する方法
“`xml