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

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

【Android】Google Mapsの「赤いピン」のカスタマイズ9種を紹介します(画像付き)

# 概要
Androidアプリ内でGoogle Mapsを表示するときに、デフォルトのマーカー(例の赤いアレ)ではなく自分で用意した画像をマーカーとして使いたかった。
マーカーの画像を変更する方法と、その他カスタマイズする方法もまとめる。

本記事では東京駅に設置したマーカーをカスタマイズしていく。

“`kotlin
override fun onMapReady(map: GoogleMap) {
val tokyo = LatLng(35.6804, 139.7690)
map.addMarker(MarkerOptions().position(tokyo))
}
“`
![tokyo_default.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124752/9a3eb38b-c612-4e9d-cf14-17b96377b85f.png)

# マーカーをカスタマイズする
カスタマイズできる項目を以下に示す。

– Position(Required)
地図上のマ

元記事を表示

Android端末1つでDiscordBotを作成し動作させる

「DiscordBotを作ってみたい、だけどPCを持っていない」という人向けにAndroid端末1つでDiscordBotを作って実際に動作させるまでの方法を紹介します。
なるべく初心者向けに説明していますが、Pythonやdiscord.py, Linuxコマンド, Vimコマンドなどの詳しい説明は省略しています。

##動作環境
– Android 9
– Termux 0.90
– Python 3.8.1
– discord.py 1.3.1

#1. Termuxのインストール
TermuxはGoogle Playストアからインストールできます。
https://play.google.com/store/apps/details?id=com.termux

Termuxとはroot化不要でLinux環境を用意することができるエミュレータです。
ここではPythonとVimを使ってDiscordBotを書く方法を説明します。

#2. Termuxでの準備
まずターミナルで以下のコマンドを実行し、aptの更新とPython, Vimのインストールを行います。($はコマンドラ

元記事を表示

Android-Codelabs-2.3: ConstraintLayoutの使い方②

2019年にGoogleから,Web上でAndroidを学べるコースが提供されました.([Android Kotlin Fundamentals Course](https://codelabs.developers.google.com/android-kotlin-fundamentals/))
この記事では,そのコースを実際にやってみてアウトプットしてみるといった内容です.
何かツッコミなどあれば編集リクエストかコメントかTwitterでいただければ修正いたします

#今回学ぶこと
・BaseLine Constraintの使い方
・ボタンのチェーンの使い方

#目指す成果物

ここでは前回に引き続き,ConstraintLayoutの使い方②をやっていきます.
前回やった[ConstraintLayoutの使い方①](https://qiita.com/syuheifujita/items/b0ce95a148863d748da4)をみていない方は,[ここから](https://github.com/syuheifujita/android-codeLab-fundamen

元記事を表示

Android-Codelabs-2.3: ConstraintLayoutの使い方①

2019年にGoogleから,Web上でAndroidを学べるコースが提供されました.([Android Kotlin Fundamentals Course](https://codelabs.developers.google.com/android-kotlin-fundamentals/))
この記事では,そのコースを実際にやってみてアウトプットしてみるといった内容です.
何かツッコミなどあれば編集リクエストかコメントかTwitterでいただければ修正いたします :pray:

#今回学ぶこと
・ViewGroupの一つである,ConstraintLayoutの使い方
・ConstraintLayoutのメリット

#目指す成果物

ここでは,,タップすると色が変わるクリック可能なテキストビューとボタンビューで構成されています.
それらのレイアウトをViewGroupである,ConstraintLayoutを使っていきます.

![2-3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24

元記事を表示

[ AndroidStudio ] PMD解析結果の見方

少し前にPMDを導入した。
https://qiita.com/QiitaD/items/7c1e635ff0cc2115d969

見方を調査してみた。

##解析結果
以下が解析結果である。
![スクリーンショット (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/b50fd921-8e6f-cabd-9979-ae8bd57b69ad.png)

例ではperformanceというところを見ている。これを開くと冗長な初期化がされていると書いてある。
その下、ビックリマークの横に発生しているクラスと行が書かれている。
試しにスクショの上半分のコードを見て頂くと、TitleActivityの11行目にボタンをnullで初期化しており、これが冗長な分だと示している。

##感想
pmdについて調べてみたが、参考になるサイトはほとんどなかった。どうやらbuildフォルダのoutputに解析結果出す方法がありそうなのだが、見つからず…
今回紹介したものでも役立ちそうなので、しばらくはこ

元記事を表示

【Crashlytics】開発中のクラッシュログで埋もれるのを防ぐ(Android版)

[Firebase Crashlytics](https://firebase.google.com/docs/crashlytics) を使うと、クラッシュログを自動的に収集でき、ユーザーの環境で起こったクラッシュの把握や原因の分析に役立つ。もはやこれなしでは不安になってしまうくらい、イマドキのアプリ開発には欠かせないツールになっていると感じる。

AndroidでCrashlyticsを使っていたところ、デフォルトだとデバッグビルド時でもお構いなしにクラッシュログを収集してしまうようだった。開発中はクラッシュはそれなりに起こるので、そのままだと本当に本番環境でクラッシュしたログが埋もれてしまう。リリースビルドでは有効にしつつ、デバッグビルドでだけCrashlyticsを無効にする方法を説明する。

# 方法

[The Firebase Blog: Firebase Crashlytics, builds and you](http://firebase.googleblog.com/2019/03/crashlytics-versions.html)

↑のブログポストの末尾の「

元記事を表示

ProgressDialogが非推奨のため、ProgressBarで代替する

ProgressDialog が API 26 (Android 8.0) から非推奨となったため、代わりに ProgressBar などを用いて実装を行う必要があります。

Referenceには ProgressDialog クラスがありますが、DialogFragment クラスを継承しただけの独自クラスです。

シンプルに実装できるものがありましたので紹介します。

以下、Kotlinのサンプルコードです。

“`Kotlin:MainActivity.kt
class MainActivity : AppCompatActivity() {

// ProgressDialog クラスはこのあと実装します
private val progressDialog = ProgressDialog.newInstance(“表示するメッセージ”)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

元記事を表示

ViewPager2とTabLayoutでページコントロール&ページ切り替えを簡単に用意

– スマートフォンアプリを使っているとよく見かけるページコントロールを簡単に作ろうという話です。
– 簡単にという事で、できればPngやJpegといった、用意するのが手間になる画像リソースも省きたいところ。

### ページコントロールってなに?
– よく見かけるこれです↓

||
|:-:|

#### このコンポーネントって・・・
– iOSのHuman Interface Guidelines に定義されている[コンポーネント](https://developer.apple.com/design/human-interface-guidelines/ios/controls/page-controls/)なので、Androidにはありません:expressionless:
– チュートリアルなん

元記事を表示

Groovy2系(Gradle)はコメント中の\uもUnicodeエスケープされる

Groovy2系の文字列リテラルは`\u0000`のように`\u`に続けて4桁の数字でUnicodeエスケープされます。
このUnicodeエスケープは文字列リテラルだけではなく困った事にコメントにも適用されます。なので例えば以下のようなコメントを書くとエラーになります。

“`groovy
// C:\upload
“`

この動作は以下のバグレポートによるとバージョン2系のパーサーはunicode readerでソースコードを読み込むので発生するとコメントされていました。つまり文字列やコメントだけではなくコードすべてに対してUnicodeエスケープしているという事です。

– [Certain string(s) in comments cause General error during parsing: Did not find four digit hex character code.](https://issues.apache.org/jira/browse/GROOVY-8395)

バージョン3系ではパーサーが新しくなりコメントに`\u`を含めることができます。

元記事を表示

細かいことはいいから特定のAPIエンドポイントのOkHttpログをtailする

Androidの開発をしてると、特定のAPIに対するリクエストとレスポンスを確認したいことって、あると思います。

普通にlogcatを眺めるだけだと、目的外のログもぶわぁーって出てしまって涙目ですよね。

皆どうしてるんですかね?私はこうしてます。(pidcatを利用)

以下、`v1/users/register` というパスを含むリクエストとレスポンスを確認するとします。

### リクエストを確認

##### コマンド
“`
pidcat com.sample.package -t OkHttp | awk ‘/–>.*v1\/users\/register, /–> END/’
“`

##### ログ

“`
OkHttp D –> POST https://api.sample.com/v1/users/register http/1.1
D Content-Type: application/json; charset=UTF-8

元記事を表示

[Android]XMLファイルに記述したオブジェクトを読み込む

# はじめに

Android では `res/xml` フォルダ に任意の XML ファイルが作成できるようになっており、
ここに XML ファイルを作成し、格納しておけば、簡単に読み込めるようになっています。
今回は この XML ファイルに記述したオブジェクトを読み込む方法について説明します。

“`Kotlin
val parser = applicationContext.resources.getXml(R.xml.user_list)
parser.getAttributeBooleanValue …
“`

# 永続化するオブジェクト(クラス)を作成する

永続化するオブジェクトは次の `Person` クラスのオブジェクトにします。
`Person` クラスは 名前(String) と 年齢(Int) 、アイコン(リソースID)を持つクラスです。

“`Kotlin:Person.kt
data class Person(val name: String, val age: Int, val iconRes: Int)
“`

# XML

元記事を表示

Android-Codelabs-2.2: EditTextを使って入出力のできるアプリの作り方

2019年にGoogleから,Web上でAndroidを学べるコースが提供されました.([Android Kotlin Fundamentals Course](https://codelabs.developers.google.com/android-kotlin-fundamentals/))
この記事では,そのコースを実際にやってみてアウトプットしてみるといった内容です.
何かツッコミなどあれば編集リクエストかコメントかTwitterでいただければ修正いたします :pray:

#今回学ぶこと
・`EditText`のビューを使用して,ユーザー入力を取得する方法
・`visibilty`属性を使って,Viewの可視性(Visible)を変更する方法

#目指す成果物

ここでは,前回使ったアプリにインタラクティブ機能を追加します.ソースコードは[こちら](https://github.com/syuheifujita/android-codeLab-fundamental-2-1)になります.

![2-2-1.png](https://qiita-image-store.s

元記事を表示

Andorid のブラウザで加速度の値を取得してグラフ表示したりローカルなファイルにセーブしたりする

# やること

タイトルそのままです。Chrome でしか動作は確認していません。多分 iOS + Safari でも動きます。下記サイトで動作を見れます。

– https://royalcrab.github.io/sample/acc_graph.html

image

正常に動くと上のような感じになります。加速度センサがついてない PC などでは、加速度の値やグラフは表示されません。

# ソースコード

全体のコードは下記に置いてます。

– https://github.com/royalcrab/royalcrab.github.io/blob/master/sample/acc_graph.html

# 要点

## 加速度データの取得

下記のコードで、加速度を取得するたびに arr に加

元記事を表示

Android-Codelabs-2.1: LinearLayoutとScrollViewの使い方

2019年にGoogleから,Web上でAndroidを学べるコースが提供されました.([Android Kotlin Fundamentals Course](https://codelabs.developers.google.com/android-kotlin-fundamentals/))
この記事では,そのコースを実際にやってみてアウトプットしてみるといった内容です.
何かツッコミなどあれば編集リクエストかコメントかTwitterでいただければ修正いたします :pray:

#今回学ぶこと
・LinearLayoutを使ってビューを整理する方法
・ViewGroupの使い方

#目指す成果物
今回は,AboutMeというアプリを作ってみます.
このアプリは,自分に関することを紹介したり友人,家族向けにカスタマイズしたりできます.

![2-1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/efb8f8d4-7d07-62c7-55ac-fb17d3e57b42.png)

元記事を表示

アンドロイドアプリ開発時に自作したお気に入りシェルスクリプト

先日アンドロイドアプリをリリースしました。
エンジニア・デザイナが何か一緒に作ったり、勉強会開いたりを気軽に出来るコミュニティツールです。

[EDICPAT ](https://play.google.com/store/apps/details?id=com.engineer_forum.engineer_forum “EDICPAT”)

アプリを作る時に自作して、いい感じに動いていたツールというか、シェルスクリプトを公開します。なお、前提としてPCはLINUX(Manjaro)を使用していますが、Shell(とかadbとか)が動けば他のOSでも使えるはずです。

# クライアント編 (adb)
– apkを端末にインストールする用のShell (install.sh)

“`
#! /bin/bash

if [ $

元記事を表示

Androidアプリ1月目の練習成果

## 参考書
・Androidアプリ開発の教科書Kotlin対応
・Kotlinスタートブック

## 作成しているアプリ
Androidアプリの勉強で今は、出勤管理アプリを作成しています。

## 今後
・Fragmentの使い方を学ぶ。現状使っていない。
・DB接続にRoomを用いているが、ViewModelは用いていないので、使う。
・お試しのため、画面からデータを取得しておらず、直接挿入している、画面かた取得して挿入するようにする。
・取得したデータが画面に表示さない。

## アドバイス助言お待ちしてます。
データ取得したリストがなぜ画面に表示できないか教えてください

## 現状できているコード

“`ruby:MainActivity.kt
class MainActivity : AppCompatActivity() {

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

元記事を表示

[kotlin]アンドロイドでViewにアニメーションを設定する

#今回やること
TextViewにアニメーションを設定して**「タップしてアニメーション発動 -> アニメーション終了時に画面遷移」**の動きを実装する
公式ドキュメント :https://developer.android.com/guide/topics/resources/animation-resource
これ↓

#実装
##アニメーションの定義
流れ的にはアニメーションをxmlファイルで定義してそれをテキストビューに設定する

**resフォルダ直下のanimフォルダ**(デフォルトではないので新規追加する)にアニメーションを定義した以下のxmlファイルを置く

“`xml:scale_down_up.xml
Androidアプリの時間指定公開のやり方と注意点【2020年2月4日時点】

Google Play Console で【時間指定公開】をする場合のやり方と注意点のメモです。
現状UI/UXともにかなり使いづらい点があるので、早く改善されることを祈ってます。

#内部テストを飛ばして【審査中】の時は、そもそも【時間指定公開】の設定ができない

>内部テスト配信 → 本番の時間指定公開申請

内部テストおわったらすぐリリース準備しようとしたら、内部テストが【審査中】となった。
気にせず下記URLのヘルプの手順に従って本番の時間指定公開の設定をしようとしたところ、設定バーが表示されない事態に…。

どうやら内部テストが審査中のステータスの時は、**時間指定公開**の設定はできないようです。

審査中のステータスが消えると、時間指定公開設定バーが表示されるようになるので、内部テストがリリースされてから時間指定公開の設定をするようにしましょう。

これはヘルプを見ても分からなかったので、要注意です。

[Play Console ヘルプ 時間指定でアプリを公開する](https://support.google.com/googleplay/android-devel

元記事を表示

adb接続できない端末でadbコマンドを実行する

特殊すぎる状況だと思います。普通に開発していれば知らなくて良い情報だと思いますが、同じ境遇に遭遇してしまった方へ哀悼の意を込めてこの記事を贈ります。

## 対象端末

私が出逢ってしまった子のスペックは、以下のとおりです。

– Android5.0
– WiFi接続は可能
– USB type-Aのポートはあるけど、ADB接続できなさそう
– USB type-Cはない
– micro USB Type-Bもない

つまりPCと接続できないため、**adbコマンドが実行できない**という特殊端末を想定します。
Wifi経由での接続方法もありますが、その場合もwifi経由での接続前に`adb tcpip`コマンドを打つ必要があるため、一度はPCとのadb接続しなくてはいけません。

## 手順

#### (1)Android端末上でコマンドを打てるアプリをインストールする

Android端末上でadbコマンドを実行するため、アプリをインストールします。必要に応じて、ストアから、またはサイトからAPKを落としてきてUSBなどで転送することも可能です。
ここではAndroid Ter

元記事を表示

Flutterでパッケージ名がcom.exampleになっているのをiOS/Androidで修正する箇所まとめ

# はじめに
flutterでプロジェクトを新しく作成するとき、

“`
flutter create my_app_name
“`

とすると、Package Name/Bundle Identifier は自動的に `com.example.my_app_name` のように指定されてしまいます。リリースに向けて開発を進めるのであればパッケージ名を正しく修正する必要があるので、その修正箇所をまとめておきます。

# Android

### 1. android/app/src/AndroidManifest.xml

– 3行目: package
– 8行目: android:label

“`xml

元記事を表示

OTHERカテゴリの最新記事