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

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

React Native 事始め – 環境構築 Android

# はじめに
最近 React Nativeはじめました。React NativeはFacebookが提供しているマルチプラットフォームアプリケーションフレームワークです。React Nativeでは開発方法が以下の二種類に分かれます。

* React Nativeを用いた方法
* Expoを用いた方法

React Nativeは通常の開発と同様でiOSの場合はipa、Androidの場合はapkファイルを作成します。しかしExpoの場合は、expo.ioに配布されたアプリケーションを参照する事で機能が実現されます。

スクリーンショット 2019-12-29 12.23.51.png

今回はReact Nativeを用いた方法を行います。Mac PCで必要なツール、ライブラリをインストールして、Androi

元記事を表示

[HTMLのみ]ブラウザのformで次の入力欄にカーソル移動させる

# Androidで入力欄が連続していると面倒臭い
![Screenshot_20200102_104447_com.android.chrome.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377322/2b06ab10-a733-211d-00a9-3375cd564857.jpeg)

会員登録のときとか、formに次々と情報を入れなければならないとき、***Androidにもタブキーが欲しい***と思うほど入力欄の移動が面倒臭い。

でもなんだか確定キー(Enterキー)の表示が変わってて、欄を移動できるときがある。
どうもIMEの違いではなさそうだ。GbordでもATOKでもShimejiでも移動できる。
ブラウザの違いでもない。ChromeでもFirefoxでもYahooブラウザでも移動できる。
ソースを開いてみるとjavascriptは埋め込まれてない。

…どういうことなの。

# 普通はカーソル移動できない

元記事を表示

Androidで進捗表示ができるまで

## 対象読者
– AndroidStudioの環境設定が終わり、Hello world! を出力できる人
– `MainActivity.java`とは何かを知っている人
– Javaを触ったことのある人
– AndroidStudioでラムダ式が使えること

# 進捗表示(作りたいやつ)
– 重たい処理をしている時に進捗をリアルタイムで確認したい

![loopOnOtherThread.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349189/f0830fac-9443-d002-58fa-acf0f521dc5b.gif)

## サンプルコード
– 簡単な例として、何らかの適当な処理を100回繰り返し、1回処理が終わるごとに進捗を1%増やすコードを作る
– ※この例での処理 `doSomeThing()` は0.01秒間スリープするだけ

“`java:MainActivity.java
// ボタンクリック時(関数: busyLoop()を呼び出す)
execBu

元記事を表示

Dagger/MissingBindingエラー

以下のようなエラーが出た

“`
エラー: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] jp.co.xxxxx.yyyy.data.repository.ZzzRepository cannot be provided without an @Provides-annotated method.
public abstract interface AppComponent extends dagger.android.AndroidInjector
 ・
 ・
 ・
“`

## 結論
対象repositryのBindsができていなかった。。。

“`
@Module(includes = [DataSourceModule::class])
interface RepositoryModule {
@Binds
fun bindZzzRepository(repository: ZzzDataRepository): ZzzRep

元記事を表示

Androidアプリのインストール数をGCPに自動収集させる

# はじめに
Androidアプリのインストール数をGCPのBigQueryに自動収集するようにしました。

これまで、Androidアプリのインストール数を確認するときは、Google Play Consoleを開き、アプリを選択し、レポートをcsv形式でダウンロードし、、、といった作業が必要でそれが面倒でした。:tired_face:

この面倒な作業をなくすために、Google Play から取得できるアプリのインストール数をGCPのBigQueryに毎日自動転送するよう設定した流れが以下の通りです。

# GCPのBigQueryにデータを格納する
1. Google Cloud PlatformのメニューからBigQueryを開く
スクリーンショット 2019-12-20 11.08.38.png

元記事を表示

10年ぶりのAndroidアプリ開発 (1)開発環境準備編

# はじめに
およそ10年ぶりにAndroidアプリを作ってみることにしたので、準備から(たどり着ければ)公開までを記事にしていきたいと思います。
私はAndroidのバージョンがまだ2の頃、少しだけアプリを作って遊んだことはありますが、その後はまったく触っていません。なので大まかなアプリの仕組みや開発の流れは分かっているつもりですが、Android Studioも触ったことがないし、Kotlinもまったく知りません。その他にも10年前と変わっていることはたくさんあると思いますので、そういった変化で戸惑ったところなど、紹介していければと思っています。

# 環境

– ホストPC: Ubuntu 18.04.3 LTS
– Android Studio: 3.5.3 for Linux 64-bit
– デバッグに使うデバイス: 主にSHARP SH-M08 (Android 9)

# Android Studioのインストール
[Android Studioのインストール](https://developer.android.com/studio/install?hl=ja)に従っ

元記事を表示

Realmのデータを確認するツール・ライブラリまとめ

Androidアプリの開発中、Realmに書き込んだデータを確認しようとしたのですが、
色々あってどれを使うかめちゃくちゃ迷ったので、調べたことをまとめておきます。
(間違いなどあればご指摘お願いします:pray:)

# Realm Studio
## 概要 :pencil:
* Realmが公式に提供している開発者ツール
* 公式ドキュメント: https://realm.io/docs/javascript/latest/#realm-studio
* 公式サイト: https://realm.io/products/realm-studio/
* `Realm Database`と`Realm Platform`を簡単に操作することができる
* 2017年10月頃にリリースされた
* Mac, Windows, Linuxに対応している

スクリーンショット 2020-01-01 17.45.26.pngAndroid端末のApplication directoryにアクセスする

Android端末において、data/data/の領域にアクセスするには、
root権限が必要。
user buildのSWがFlashされている場合など、root化されていない端末では、
debug時など不便だが、“`run-as“`コマンドを使用することで解決することができる。

“`command.java
adb shell
run-as // e.g. run-as com.android.sample
“`

※Linux環境で確認

元記事を表示

LIFFを更新してもAndroidでは反映されない問題に対処

# 概要
LIFF(LINE Front-end Framework)でとあるサービスを開発している際、ページ内容を更新しようとすると、Androidではキャッシュされしまい更新されなくなってしまった。
# 方法
LIFFのエンドポイントに適当なクエリパラメータを指定し、ページを更新するたびに値を変えれば良い。
## 例
スクリーンショット 2020-01-01 2.40.22.png
123を124とかに変更すると更新される。
# 余談
まともなLIFFのサービスってあるんですかね。知ってる人いたら教えてください。開発中って人も、

元記事を表示

busybox no rootをやろうとした話(2019版)

#Busyboxとは
Busyboxとは、いくつかのよく使うコマンドを一つのコマンドにまとめた便利つーる(スイスアーミーナイフ)です。これをAndroid Terminal Emulatorに久しぶりに入れてみようとした話です。
#Androidのセキュリティ
AndroidはLinuxと違い、一般ストレージにおいたファイルに実行権限をつけたりすることはできません。(スクリプトなどは動かせますが。)
そのため、elfなファイルを動かしたい場合、いくつか制約があります。

1. root権限や1000以下のポートを占拠することができない
2. いくつかのディレクトリが読み取り専用
3. フォルダ構造その他Androidはカスタムされているのでうまく動かない

そのため、うまくコマンドを実行させるにはビルドから行って、さらに設定なども細かく変える必要があります。
Busyboxはそこまでは必要ありません。すでにバイナリが用意されているからです。
https://forum.xda-developers.com/showthread.php?t=1929852
ここからAndroid arm

元記事を表示

PC上で編集したファイルをNDKでビルドしてadb経由で実行する

ほぼタイトルに書いてあることをしただけですが、せっかくなんで共有します。
例はアセンブリーで書かれたファイルをビルド・実行していますが、C言語でも同じようなことをすれば実行できるはずです(確かこの前試してうまくいった)。
ちょっとしたファイルをビルドしてAndroidで実行したいという時に参考にしてください。
Android Studioを立ち上げるまでもなく済みます。

# 背景

1. 最近わけあってアセンブリーを勉強し始めた。
1. お皿洗ってるときについでに勉強したいな、と思ってYouTubeで検索したら[Assembly Language Tutorial](http://www.newthinktank.com/2016/04/assembly-language-tutorial/)が見つかった。
1. やっぱり観るだけじゃ勉強にならないので実行したくなった。
1. 例はARM 32bit向けなので、手元のAndroidスマホなら実行できるかな、と思った。
– 実際にはARM 64bitなので結構勝手が違い、移植に苦戦しましたが…

# あらかじめインストールし

元記事を表示

ProductFlavor覚書

# はじめに
Android開発でProductFlavorはよく使いますが、
はじめに一回きりか予め別の人が設定しているかで自分が理解する機会をえれていなかったので、
覚書を残します。

環境
AndroidStudio 3.5.1

# 業務でよく使うパターン、覚えておきたいこと
## 例題(要件)
– 開発環境、ステージング環境が2つ(stg1 / stg2)、本番環境がある
– それぞれ別のアプリでインストール・起動・テストをしたい
– 一部の処理を各環境ごとに変更したい

### 初期状態のbuild.gradle(app)

“`gradle
apply plugin: ‘com.android.application’

apply plugin: ‘kotlin-android’

apply plugin: ‘kotlin-android-extensions’

android {
compileSdkVersion 28
defaultConfig {
applicationId “sample.my.mvvm_bmi”

元記事を表示

androidでadbのインストールする際にエラーが出る場合

# androidにapkがインストールできない。

androidのapkをwindows10のコマンドプロンプトのadbを利用し、インストール`sony Xperia Z3 compact / android6.0.1`にインストールをしようとした際に以下のエラーが発生。

// インストールコマンド
adb install -r  C:\Users\hoge\Desktop\アプリ\apk\hoge-app.apk

// エラー文言
Performing Push Install
adb: error: failed to copy  to '/data/local/tmp/./.': remote Is a directory
rm: /data/local/tmp/.: Is a directory

# 他の端末を利用するとすんなりインストール出来る。

apk側の問題かと思い、`Pixel 3a / android10.0.0`にも同様のコマンドでインストールを試みた。

// インストールコマンド
adb install -r C:

元記事を表示

Android GNSS Analyzer のインストール

# 前置き

### Android 端末で Raw GNSS measurements を取得

実はAndroid ではGPS受信機から、位置情報だけでなく、位置情報を計算するために使用する受信機の観測値 [Raw GNSS measurements を取得するAPI](https://developer.android.com/guide/topics/sensors/gnss)が用意されています。実際にRaw measurements を取得するのは、このAPIに対応した実装がなされている機種のみですが、対応が確認が取れている機種は同ページに掲載されています。私が使っている Huawei P10 も対応しています。

実際にどのように記録するかですが、Googleから出している GNSSLogger を使えます。ここでのログが、今回の件名にあるGNSS Analyzer の入力に使用するファイルです。実際の測位ではRINEX format というformat が標準的に用いられています。Raw measurement を RINEX形式で保存してくれるアプリもたくさん出ていま

元記事を表示

Android(Kotlin)で標準の音声合成(TextToSpeech)を細かくカスタマイズして使う

#概要
[Android(Kotlin)で標準の音声合成(TextToSpeech)を使う](https://qiita.com/maKunugi/items/059861da848219859f34)の続きになります。
上記の記事では、Android(Kotlin)で利用可能な音声合成、TextToSpeechの使い方をメモしましたが、より細かくカスタマイズして使う方法についてメモしていきます。

## 実装

すでにTextToSpeechのインスタンス生成が済んでいる前提でメモしていきます。
TextToSpeechの基本的な使い方に関しては、[Android(Kotlin)で標準の音声合成(TextToSpeech)を使う](https://qiita.com/maKunugi/items/059861da848219859f34)をご参照ください。

```kotlin
class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener {

private var textToSpeech: T

元記事を表示

Android(Kotlin)で標準の音声合成(TextToSpeech)を使う

#概要
Androidでは、TextToSpeechを利用することによって音声合成機能を実装することが可能です。
Android1.6からTextToSpeech自体は利用が可能でしたが、日本語は音声のモデルデータが端末に存在していない等、気軽に使えない期間も存在していました。最近は日本語の音声合成も不自由なく使える端末が出揃っています。今回はAndroid(Kotlin)でTextToSpeechを利用する方法について軽くメモします。

# 実装

音声の読み上げに必要な実装を掻い摘んでメモしていきます。

## 初期化
TextToSpeechを生成します。

```kotlin
class MainActivity : AppCompatActivity(), TextToSpeech.OnInitListener {

private var textToSpeech: TextToSpeech? = null

override fun onCreate(savedInstanceState: Bundle?) {
// ~省略~

元記事を表示

[Android]カスタムビューの作り方 (複合コンポーネント)

# はじめに

Android では[公式](https://developer.android.com/guide/topics/ui/custom-components)にあるとおりカスタムビューを作成する方法が何パターンかあります。
今回は複合コンポーネントを作成してみたので作成方法をまとめたいと思います。

| 名称 | 説明 |
| --- | --- |
| フルカスタムコンポーネント | `View`を継承していちから新たなコンポーネントを作成するパターン |
| 複合コンポーネント | 既存のコンポーネントを複数組み合わせて新たなコンポーネントを作成するパターン |

![mermaid.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/ad67be1d-78a4-4abf-75ec-a915df29d736.png)

今回は次のような3つのボタンをまとめ、選択したボタンのテキストが
赤く表示される複合コンポーネントを作成したいと思います。

![Dec-30-2019 20-

元記事を表示

35歳未経験でエンジニアになった自分がこの一年でやったこと

# はじめに
35歳定年説、という言葉があります。
文字通りエンジニアの定年は35歳までであるという意味ですが、逆に私は**35歳で実務未経験から**エンジニアという道に踏み込みました。

転職から約一年が経ったので、この一年の振り返りの意味も込めて記事を投稿します。

# この記事の目的
- 未経験からエンジニアへ転進しようとしている人の応援がしたい!
- プログラム初心者に**「こんなクソ雑魚でもエンジニアになれるんだ!」**と希望を与えたい!

# 誰?
@m-coder と申します。2018年10月よりAndroidアプリエンジニアをやっております。使用言語はKotlinです。

# 経歴
(多少ぼかしが入っています)
学歴はほぼ**無**です。高卒です。理系ですらないです。
職歴はアルバイト生活ののち、3年ほど事務職でExcelマクロをしこしこ組んでいました。
いろいろあって去年の10月に今の会社へ転職し、実務未経験からAndroidエンジニアになりました。

# 入社前のプログラミングスキル
高校の頃からぼんやりと「プログラミングでゲームとか作れたら楽しそうだなあ」と思いつ

元記事を表示

【ぶっちゃけAndroidアプリ開発】sqliteでデータベースを作成する

とりあえずsqliteでデータベースを作成したい人のためのTipsです。
csvからインポートしてデータベースを作成します。

<使用環境>
・Macbook Pro
・バージョン10.15.2(Catalina)

##1.csvファイル
```test.csv
1,東京都庁,東京都新宿区西新宿2-8-1,03-5321-1111,metro.tokyo.jp
2,神奈川県庁,神奈川県横浜市中区日本大通1,045-210-1111,pref.kanagawa.jp
3,埼玉県庁,埼玉県さいたま市浦和区高砂3-15-1,048-824-2111,pref.saitama.lg.jp
4,千葉県庁,千葉県千葉市中央市場町1-1,043-223-2110,pref.chiba.lg.jp
5,静岡県庁,静岡県静岡市葵区追手町9-6,054-221-2455,pref.shizuoka.jp
```
住所録ちっくなcsvファイルを作成しておく。
##2.データベースを作成してcsvをインポート
ターミナルでデータベースの器を作成しつつsqliteに入る。
既にデータベースがある場合も同じコマ

元記事を表示

Android で OpenCL を試す

### OpenCL

OpenCL(Open Computing Language)は、マルチコアCPUやGPU などによる異種混在の計算資源において、
並列コンピューティングのためのクロスプラットフォームなAPIである。
標準化団体のクロノス・グループ(Khronos Group) によって仕様が策定され、
ロイヤリティフリーなオープン仕様として公開されている。

[ wikipedia : OpenCL](https://ja.wikipedia.org/wiki/OpenCL)

Android では、公式にはサポートされていないが。
CPU/GPUメーカーによりサポートされている。
機種依存性 高し。

[Android上でのOpenCLの現状](https://qiita.com/hnw/items/8c598eb897806a2b0623)

### Android で OpenCLの環境を作る

まず、CPU と GPUのメーカーと型番を調べる。

Nexus5 で実行した例

CPU
> $ adb shell cat /proc/cpuinfo | grep Har

元記事を表示

OTHERカテゴリの最新記事