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

Android関連のことを調べてみた2020年10月07日
目次

【Kotlin】委譲プロパティ (Delegated Properties) 入門

# 【Kotlin】委譲プロパティ (Delegated Properties)について
## 目次
1. [委譲プロパティ (Delegated Properties)とは](#委譲プロパティ (Delegated Properties)とは)
2. [委譲とは](#委譲とは)
2. [標準ライブラリ](#標準ライブラリ)
4. [まとめ](#まとめ)
5. [参考にさせていただいたサイトなど](#参考にさせていただいたサイトなど)

## 委譲プロパティ (Delegated Properties)とは
* クラスのプロパティ(メンバ)のsetter/getter処理を別のオブジェクトに移譲する仕組み
* ここで私は、移譲とはというのがまだ理解できてないレベルでした。
* byを使うことで、委譲する先を指定できます。

## 委譲とは
* `委譲 (delegation) とはオブジェクト指向プログラミングにおいて、あるオブジェクトの操作を一部他のオブジェクトに代替させる手法のこと。` (wikipedia参照)

* 例
* クラスBで処理を、クラスAのオブジェクト

元記事を表示

UnityAndroidでExportしたprojectをステップ実行

# 環境1
OS : win10 pro
Unity5.6
AndroidStudio2.3.2

OS : win10 pro
Unity2019
AndroidStudio4

# 手順
・Unity C#プラグインメソッドを呼び出す。pluginは消す。
・UnityでExportする。
・AndroidStudioでそれを開く。
・AndroidStudioで、C#で呼び出したプラグインメソッドと同じIFのメソッドを作成する。

# 確認

Java層でブレークポイント停止するのを確認した。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555658/0fba47f2-cc67-5597-4b4a-ac9b37fb7a9f.png)

AndroidJavaObjectの引数は JavaクラスへのFULLPATH / TestMainがクラス名
Unity/Assert/Plugins/Android以下は空にしてEXPORTする。

c#

“`

string Pl

元記事を表示

unityのARFoundationでアプリ作ったのに、実機だとカメラが真っ黒になってしまう時の改善策

unityのARFoundationでARのアプリをエラーなく作ったのに、iosやAndroidで実機で立ち上げると、カメラが真っ黒で映らない!!時の改善方法をご紹介します。

#改善策
* **「camera usage description」** を設定していない

Edit→project settings→Player→iosまたはAndroidを選択(実機の環境)
→camera usage descriptionの欄に

**Camera required for AR**

というように記入してビルド
iosの場合はこれでXcodeの内のinfo.plistにPrivacy – Camera Usage Description が自動的にセットされます。

![スクリーンショット 2020-10-06 17.02.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704869/13c3af7c-d20f-e92b-f345-dde814670140.png)

* **XR Plu

元記事を表示

localhost をスマホ実機で確認する方法

## 前置き
ローカルで WEB の開発中に実機確認したいことってあるじゃないですか。
サーバーにアップすればもちろん見られるんですが、めんどくさいときもある。

そんなときに、localhost で起動中のページに直接アクセスするには以下の手順を踏むことで確認ができます。

## localhost をスマホで確認する方法
1. 同じ Wi-Fi に PC / スマホで接続する
2. PC のIPアドレスを確認する(Mac の場合は `システム環境設定` => `ネットワーク` など)
3. localhost を PC で起動
4. スマホで `IP:ポート番号` にアクセス(`192.168.1.1:8080` など)
5. 見られる!

## iPhone Safali のWebインスペクタを使う
iPhone – Mac だと、Safali の Webインスペクタ(developer tool) が使えます。

1. iPhone と Mac を有線接続
2. iPhone で `設定` => `Safari` => `詳細` => `Webインスペクタ`をオンにする。
3.

元記事を表示

AIR GOで無料でAndroid/iOSアプリの脆弱性診断

「[AIR GO](https://air.line.me/air/product#airgo)」はLINEが提供しているセキュリティープラットフォーム「[AIR](https://air.line.me/air/what_air)」のプロダクトの1つで無料でモバイルアプリの脆弱性診断を行ってくれるSaaSです。

AIRの[アカウント登録](https://air.line.me/member/signup)を行えば直ぐに使い始めることができます。

作ったAIRアカウントでログインしてAIR GOを開き、AndroidならAPKファイル、iOSならIPAファイルをアップロードするだけで、直ぐに脆弱性診断が行えます。
URLを入力すると参照先にマルウェアが含まれていないかチェックできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96507/7ddfa51c-dd58-7d0a-eae5-85091dd22b5d.png)

脆弱性診断結果は次のようなレポート形式で表示されます

元記事を表示

[Android開発]Javaで画像をサーバーから取得してImageViewに設定しよう!!

#説明
画像ファイルをURLで参照して、サーバーから取得する方法です。(非同期処理)

#Java

“`java:GetImagesUrl
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

public class ImageUrl extends AsyncTask {

ImageView bmImage;

public ImageUrl(ImageView bmImage) {
this.bmImage = bmImage;
}

@

元記事を表示

【Ktolin初心者】Groupieを使ってRecyclerView実装してみた

# はじめに
Androidエンジニア勤務1日目の内容がGroupieを使ってのRecyclerViewの実装でした。
自分が知りたかった内容をメモとして書いてるため超初心者Android向けの記事になります。

## RecyclerViewでGroupieなにができるのか?
イメージとしてはLINEなどのトーク画面一覧に近いものを作成することが可能です。

完成イメージ

mojikyo45_640-2.gif

https://github.com/naoyukitsuruo/recyclerview_sample

## 開発環境
– macOS:10.14.6
– Android Studio:4.0.1
– kotlin:1.3.72

### 作業順番
– Groupie 導入
– Recycl

元記事を表示

SnackbarでScrollView can host only one direct childと怒られる件について

[Snackbar](https://developer.android.com/reference/com/google/android/material/snackbar/Snackbar) で *ScrollView can host only one direct child* と怒られる件についてのメモです。

# 概要
ScrollView/NestedScrollView は子を1つしか持てないため、2つ目を addView() しようとするとエラーが出ます。

しかし、そのようなコードを書いたつもりが無くても Snackbar が *java.lang.IllegalStateException: ScrollView can host only one direct child* と例外をスローすることがあります。

以下に、このような問題が発生するケースの説明とサンプル2点を示しました。

# 怒られるケース

厳密じゃないけどざっくり言うと、ScrollView や NestedScrollView の親が View 以外の場合に怒られます。

[Snackbar

元記事を表示

Android11でTextToSpeechが動作しない時の対処法

##はじめに
急に開発で使用しているPixel3でTextToSpeechが動作しなくなった。
他の開発端末Xperia等では普通に動く。
TextToSpeechのonInitListenerで `status = -1`が返却される

##原因及び対処法
###原因: android 11の仕様

###対処法: AndroidManifest.xmlにINTENT_ACTION_TTS_SERVICEを追加
公式に以下のように書かれていました。
> Apps targeting Android 11 that use text-to-speech should declare TextToSpeech.Engine#INTENT_ACTION_TTS_SERVICE in the queries elements of their manifest:

マニフェストに以下のような感じで追加すると動くようになります。

“`xml:AndroidManifest.xml

  ・・・

   ・・・

元記事を表示

未経験者がKotlinでおうちのIoT化アプリを作ってみた

#AndroidアプリとIoT
[これまでセンサとRaspberryPiを使って我が家のIoT化を進めて来ましたが](https://qiita.com/c60evaporator/items/283d0569eba58830f86e)、収集したデータの確認にPCを起動するのが面倒なので、

**スマホで状況確認したい**
という(個人的)要望が高まってきました。

そこで今回は、上記の要望に応えるためにAndroidアプリをKotlinで作成してみました!
[(GitHubにもアップロードしております)](https://github.com/c60evaporator)
![all.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/8b917693-05d5-8d3d-8fef-d258bf630930.png)

Kotlin・スマホアプリはおろか、JavaやWebアプリの開発経験すらないので手探りでの実装となりましたが、
私のように
**「一定のプログラミング経験はあるけど、スマホアプ

元記事を表示

UnityでFirebase AuthenticationとFirestoreのサンプル

# はじめに

最近、個人でミニゲームを作成していて裏側でFirebaseを使用しています。
それで認証周りとFirestoreの疎通を検証したのでそのサンプルコードを載せておきます。
あと、エラーの遭遇とかも多々あったのでその辺りも記載しています。

基本ボタンをポチッとするだけで認証通ってゲームデータにアクセスできる作りを想定して組んでいます。
なのでメール認証とか電話番号認証とかはスルーしています。

~~Androidも合わせて作るつもりでしたが、iOSが終わって続けてAndroidもやろうとしたらビルドでこけて解消したときには心折れていたので、匿名(ゲストユーザー)の実装しかしていません。
週末あたりに対応して記事更新しておきます。~~
**※2020/10/04追記
Androidも認証追加しました。**

以下の認証フローで確認しました。

ゲストから他の認証行った場合にユーザーをリンクさせる処理は実装しています。
複数アカウントの結合は今のところ必要な機能ではなかったので実装していません。

* iOS
* 匿名(ゲストユーザー)
* Sign I

元記事を表示

[Flutter]Timer.periodicで現在時刻を表示したらエラーが出続けた

#Timer.periodicでエラー
Flutter開発の勉強中、現在時刻の表示を行った後に画面遷移をしたら、エラーが出力され続ける現象に遭遇しました。
なかなか困ってしまったので、忘れないように対処法のメモ書きを残します。
dispose内でちゃんとキャンセルを書かないと停止されず、裏で動き続けちゃう様です。

“`dart:timer.dart
import ‘package:flutter/material.dart’;
import ‘package:intl/intl.dart’;
import ‘dart:async’;

class TimerPage extends StatefulWidget {
@override
State createState() {
return _TimerState();
}
}

class _TimerState extends State {
String _nowtime = ”;
var formatter = DateFormat(‘yy

元記事を表示

[Android] ホーム起動後すぐにServiceからActivity起動しようとすると5秒遅れる

## はじめに

[[Android] logcatから問題解析してみよう](https://qiita.com/jda7407/items/269a229b49b31623ee9d) を書いたのですが、その実例として解析の過程をまとめました。

ちなみに、5秒のDelayの原因はAndroidの仕様でした。

## 背景
ホームキーが押された時に発行されるIntent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)をサービスで拾ってActivityを起動させるアプリを作った。
https://github.com/x-satoru/ActivityTest

しかし、ホーム画面表示後すぐにホームキー押すとActivity起動が遅れる問題に遭遇した
logcatから原因を調査する

## ログ取り

問題発生時の周辺のログを取得

“`
05-03 12:17:02.536 5465 5465 D HomeKeyReceiverService: onReceive Home Intent
05-03 12:17:02.536 5465 5465 D H

元記事を表示

【Android】URL から画像をダウンロードして内部ストレージに保存する方法

# はじめに

Android アプリで、URL から画像をダウンロード → 内部ストレージに保存をやりたくていろいろ調べました。記事によって書き方が多種多様で、記事どおりにしても意図した動きにならなかったりしたのですが、試行錯誤して最終的にうまくいったので備忘としてメモします。

# Android アプリでデータを保存するときの選択肢

Android アプリでデータを保存する場合、保存先として次の4つの選択肢があります。

| 保存場所 | 説明 |
|—|—|
| 内部ファイルストレージ | 端末のファイルシステムにアプリのプライベートファイルを保存。 |
| 外部ファイルストレージ | 共有外部ファイルシステムにファイルを保存。通常は写真などの共有ユーザー ファイル用。 |
| 共有の環境設定 | キーと値のペアでプライベートプリミティブデータを保存。 |
| データベース | プライベートデータベースに構造化データを保存。 |

出典:[データとファイルのストレージの概要](https://developer.android.com/guide/topics/da

元記事を表示

【開発レポート】捨てるTODOを1週間で作ろうとした話

![todo_cover.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401916/b81091b7-b1d2-5d19-6810-f981565d179e.png)
Unityを使って普通のアプリを作ってみたくてTodo管理アプリを作ってみました。
その名も「捨てるTODO」です!
今回はその開発の流れや開発したアプリについて紹介していきたいと思います。

ブログ本文はこちらです
https://tedenglish.site/todoapp-dev-report/

元記事を表示

AndroidStudioでThe application could not be installed.のエラーが出てしまったとき

#エラー内容
AndroidStudioでエミュレーターを動作させようとしたら以下のエラーが出ました。
Clean ProjectをしてもRunできない状態でした。

“`
The application could not be installed.
Installation failed due to: ”cmd package install-create -r -t –full -S 2681626′ returns error ‘Unknown failure: cmd: Can’t find service: package”
“`

#解決方法
– Tool>AVDManagerから使用していたAVDをCold Boot Now
– Clean Project実行
– もう一度Run

の手順で動くようになりました。
![AVDManager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648333/444c67ce-1abb-d8f0-2128-2aebf4310713.p

元記事を表示

AdMob バナー広告の読み込み時にプレースホルダーを表示する

## 課題

AndroidでAdMobバナー広告は[アダプティブ バナー](https://developers.google.com/admob/android/banner/adaptive?hl=ja)使用します。
よくある広告バナーをアプリ上部or下部に常時表示するアプリでは、リンク先の通り以下のように実装します。(レイアウトの呼び出しはDataBindingを使用しています。)

“`Kotlin:MainActivity
class MainActivity : AppCompatActivity(R.layout.activity_main) {

private lateinit var adView: AdView
private val adSize: AdSize
get() {
val display = windowManager.defaultDisplay
val outMetrics = DisplayMetrics()
displa

元記事を表示

#1 Kotlin Koans Introduction/Hello,world 解説

# はじめに

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

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

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

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

# Introduction/Hello,worldの解説

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

まずは、右側の本文を見てみましょう。

> Take a look at function syntax and make the function `start` return the string `”OK”`.

> In the tasks the function `TODO()`

元記事を表示

私のKotlin学習法(初学者向け)

# はじめに

Androidエンジニアとして働いております、Goです:smile:

今回は私がどのようにKotlinを学習したのかをお伝えしたいと思います。

皆さんのKotlinの学習の一助となれば幸いです:muscle:

# 対象者

* Kotlinの学習を始めようとしている方
* Kotlinの学習の方法で悩んでいる方
* Androidアプリを作ってみたいと思われている方

# Kotlinって何?

KotlinはJavaの後継言語としての活躍を期待して誕生しました。

1番の特徴は、Javaと完全な**相互運用性**があるということです。

つまり、**既存のJavaのライブラリが使える!**ということです。

Javaは世界中の多くのエンジニアが利用しており、様々な場面で使われています。

そのため、便利なライブラリが多く準備されているのです。

これらの恩恵を被ることができるのは、Kotlinの大きな特徴と言えるでしょう。

(※KotlinはJVM(Java Virtual Machine)というJavaの実行環境で動作する特徴もあります。)

また、

元記事を表示

[Android] logcatから問題解析してみよう

## はじめに

Androidアプリ開発をしていて問題が発生した場合、解決策は2つあります。
 1.ググる
 2.ログから解析

1は誰でも出来る事ですが、ドンピシャな回答があるとは限りません。
今回はログから解析する場合、どんな感じで読み解けばよいのか、解説していきます。

## logcatで出力されるログについて

logcatのログは “`timestamp PID TID log-level“` メッセージ というように表示される

例えばこんなログ

“`
05-03 12:17:02.536 1860 12249 I ActivityManager: START u0 {flg=0x10008000 cmp=com.jp.pripri.activitytest/.MainActivity} from uid 10075
“`

– timestamp: 05-03 12:15:04.666
– PID(プロセスID): 1860
– TID(スレッドID): 4144
– log-level: Info
– メッセージ: ActivityManager: ST

元記事を表示

OTHERカテゴリの最新記事