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

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

データバックアップ

#データバックアップの実装方法の参考サイト

Androidアプリのデータバックアップは下記の2通りあるらしい。

・Key-Valueバックアップ(Android Backup Service)
・Android自動バックアップ

実装で参考にしたサイトは下記のとおり。

**■公式サイト**
https://developer.android.com/guide/topics/data/backup

**■Key-Valueバックアップ(Android Backup Service)**

Key-Value形式のバックアップ機能詳細


https://www.atmarkit.co.jp/ait/articles/1307/18/news026.html

**■Android自動バックアップ**

Android自動バックアップ(Auto Backup for Apps)詳細

**■FileBackupHelperでSQLiteのデータベースファイルをバックアップする**
https://esmasui.hatenadiary.org/e

元記事を表示

【Android】画面タッチイベントを実装する

# はじめに
私の開発しているアプリ[KUMIWAKE](https://peraichi.com/landing_pages/view/kumiwake)では、フォームの入力画面で任意の場所を**ダブルタップ**すると、一番上のフォームに入力ができるような機能を実装しています。なぜこの機能を実装したかというと、最近のケータイは画面が大きすぎて上のフォームまで指が余裕で届かないからですね。

今回はこのような画面のタッチイベント取得についてまとめてみました。

# タッチイベントの実装
まず、タッチイベントを拾いたい画面のアクティビティの記述です。
`MyGestureListen

元記事を表示

透明度を含むカラーの定義の仕方

よく忘れるので備忘録に

# 透明度のあるカラー定義の仕方

“`
#AARRGGBB
“`

https://developer.android.com/guide/topics/resources/more-resources.html#Color

AA: [アルファチャンネル](https://www.weblio.jp/content/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB)
RR: 赤の16進数
GG: 緑の16進数
BB: 青の16進数

# アルファチャンネル部分の計算の仕方

ケース: 20%だけ透過したい

## 不透明度(opacity)を計算する

`100 – 20 = 80(%) = 0.8(opacity)`

### アルファチャンネルの範囲に変換
アルファチャンネルの範囲は8bit(0-255)

`255 × 0.8(opacity) = 204`

## 値を16進数に変換

この10進数の値を16進数に変換

元記事を表示

Android に MPAndroidChart を追加する際の注意点

こんばんは。
今作っているアプリにグラフ表示ができるようにしたいなぁと思い、MPAndroidChartを追加しようとした際に少し詰まったので備忘録です。

MPAndroidChartとはいろんなグラフを簡単に表示することができるライブラリです。
ヌルヌル動きます。すごいです。
[MPAndroidChart](https://github.com/PhilJay/MPAndroidChart)

##何に詰まったのか

[こちら](https://github.com/PhilJay/MPAndroidChart#gradle-setup)をみて、プロジェクトモジュールに maven の依存関係を追加しようとした際に詰まりました。

まずは間違い

“`gradle
buildscript {
ext.kotlin_version = ‘1.3.71’
repositories {
google()
jcenter()
maven { url ‘https://jitpack.io’ } // 間違い
}

元記事を表示

Gradle における api, implementation, compileOnly の モジュール依存関係 の 違い

# Gradle dependencies の話
表でざっくりと説明

## このような依存関係があったとして、

“`
app
|-> api project(“:module-a”)
| |-> api project(“:module-a-a”)
| |-> implementation project(“:module-a-i”)
| |-> compileOnly project(“:module-a-c”)
|-> implementation project(“:module-i”)
|-> api project(“:module-i-a”)
|-> implementation project(“:module-i-i”)
|-> compileOnly project(“:module-i-c”)

“`

### appモジュールからの実行と可視性はこのようになる。

| モジュール | 実行[^1] | 直接参照できるか[^2] |
|—|—|—|
| module-a

元記事を表示

Androidのシステム設定を取得する、設定画面を開く

# はじめに

アプリで独自に用意している設定のうち、システム設定(設定アプリ上の設定)に依存するものはアプリ側でシステム設定画面に誘導したいことがあります。

例えば通知に関しては、Android 5からシステム設定でアプリ別に通知を無効化できるようになり、Android 8から優先度(priority)など様々な設定がシステム設定で制御できるようになりました。
そのためアプリ内で通知周りの設定を独自で用意していると、システム設定によっては機能しないことがあります。

このような場合、Intent Actionを用いてシステム設定画面に遷移させることで、ユーザーに設定の確認を促すことができます。

## 注意

基本的に暗黙的Intentで遷移させる手法なので、OSバージョンやメーカーによって目的の画面に遷移できないことがあります。

# システム設定画面に遷移する

例えばアプリ個別のシステム通知設定画面に遷移するには、次のようにIntent Actionに`Settings.ACTION_APP_NOTIFICATION_SETTINGS`を指定し、Extraにパッケージ名を設定

元記事を表示

Androidでルビ(ふりがな)表示を調査してみた

# 概要

Androidでルビ(ふりがな)表示するライブラリのいくつかについて、その特性を調べてみたので内容をまとめてみました。

# 背景

iOSにはCTRubyAnnotationでルビを表示する機能があるそうですが、現状Androidにはアプリ上でルビを表示する機能はありません。WebViewであれば、rubyタグによってルビを表示することはできますが、TextViewのようなView上で表示させるためには、外部のライブラリ等に頼る必要があります。
Androidアプリ開発でルビ対応を行う必要があったのでGitHubを探してみたところ、該当するライブラリがいくつかありました。しかし、どれを選べば良いかよく分からなかったので、それぞれの特性について調べることにしました。

# 対象ライブラリ

以下、GitHu

元記事を表示

既存のAndroid Projectのコピー/リネーム方法

#プロジェクトのコピー
1. **ExistingProject**のコピーを作成
2. コピーしたディレクトリ名称を**NewProject**に変更

#プロジェクトコンポーネントの名前を変更しリファクタリング
**NewProject**内のパッケージやファイルには**ExistingProject**の文字が使用されているので変更する
1. Android Studioを起動
2. **Open an existing Android Studio project**を選択
3. **NewProject**ディレクトリに移動して選択、OKをクリック
4. **Build > Clean Project**を選択し自動生成されたファイルを削除
5. **app > java**フォルダを展開
6. **com.example.android.existingproject**を右クリックし、**Refactor > Rename**を選択。**Warning**ダイアログが表示されるので**Rename package**を選択
7. **Rename**ダイアログが表示される

元記事を表示

【Android】QRコード機能ライブラリのZXingを導入する際につまずいた話

#ZXingを使ってQRコードを読み取る
今回は、AndroidStudioでライブラリを導入する際につまづいた話をしていきます。
実装したかったのは上の見出し通りです。
ちなみに自分はまずAndroidStudioをインストールすることから始めた超初心者なんであったかい目でお願いします…。
今回導入するライブラリはかなり有名なライブラリ**zxing**っていうやつです。
Androidアプリ開発でQRコードの機能を追加するぞってなった時は結構な確率でこのライブラリを使用するのではないか、レベルのやつ。
実際に導入手順を説明しながら自分がつまづいた所を説明していきます。
取りあえず自分の環境を公開!

##環境
AndroidStudioversion : 3.6.2
MinSDK : 26
buildtoolversion : 29.0.3
compileversion : 29
language : Koltin

##実装
状態としては新しくプロジェクトを作成して何も触っていない状態から始めます。
こっちの方がわかりやすいし、いかんせんイラン設定してそのせいでエラーとか嫌で

元記事を表示

今更だがAndroidでダークテーマを試してみる

Android10でダークテーマが使えるようになりましたが、あんまり触ったことがなかったのでやってみました。

# 一旦DayNight Themeを実装してみよう

DayNight Themeを実装すると、デフォルトではダークモードの変更により画面に変化があるみたいです。
レイアウトにはConstraintLayoutとToolBarだけの状態にしました。

| 基本 | ダークモード |
|:—————-:|:——————:|
|001_1.png|001_1.pngFlutter環境構築 – 3(Android Studio・Androidエミュレータセットアップ編)

#はじめに
今回はFlutter環境構築第3弾 「**Android Studio・Androidエミュレータセットアップ編**」です!
Flutter SDKのインストール・Flutterコマンドのセットアップがお済みでない方は、
先に「Flutter SDKインストール編」をご覧ください。

**Flutter環境構築シリーズ**
・[Flutter環境構築 – 1(Flutter SDKインストール編)](https://qiita.com/naru_chan__/items/359fcdfb8aa092e9a44e)
・[Flutter環境構築 – 2(Xcode・iOSシミュレーターセットアップ編)](https://qiita.com/naru_chan__/items/d64455cb7d0e7dd223a5)

#「Android Studio・Androidエミュレータセットアップ編」でやること
本編では以下の項目を行います。

– Android Studioのインストール
– Android Studioのセットアップ
– サンプルのFlutterアプリを実行

元記事を表示

眺めて覚える C# Xamarin (5) 音声認識

# Androidの音声認識をプログラムしちゃおう!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/0909b41e-7cd7-7d53-1153-6ef4aa860a53.png)
###新しいプロジェクトを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/c921ca52-b0b8-48f0-be01-89c855ec7933.png)
# モバイルアプリ(Xamarin forms)を選択 次へ
### Android アプリでもできるけど例題がほとんどないモバイルアプリで作るね!
####モバイルアプリのほうが何となくシンプルだから!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/028f9dd9-bb9a-ed4b-c6de-583399

元記事を表示

Navigation Component + BottomNavigationViewで、Fragmentを作り直さない(backStackから表示する)

# 背景

Navigation Componentを用いて、Single Activityのアプリを実現したい。
BottomNavigationとNavigationControllerとの連動は、よしなにしてくれて便利だが、画面切り替え時に度々Fragmentを作り直してしまう。。。

# 解決策

Androidのarchitecture-components-sampleのプロジェクトから、NavigationExtensionのコードを拝借させてもらう。

https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample

# 使い方

Home, MyPageの2つのメニューがあるBottomNavigationを考える

1. BottomNavigationのmenuItemのidと同じ名前のnavigation graphをそれぞれ作る。今回は、home.xmlとmy_page.xmlを作成。
2. home.xmlには、Homeメニューから

元記事を表示

甥っ子のために簡単なスマホゲームを作ってみる

#はじめに
甥っ子が4歳になりスマホの画面を適当にポチポチ触って遊んでるので、簡単で4歳児にもわかるゲームを作ってあげたいなと思って、勉強を兼ねて実際に作ってみることに。
とはいえ、androidアプリなんて作ったことないし、ましてやゲームなんて…

調べてみたらCode for Funさん([【作って学べる】Android Studio ゲームアプリ開発入門](https://codeforfun.jp/android-studio-catch-the-ball-intro/))が大変わかりやすく環境構築から簡単なゲームを作る手順を解説していたので、これを見ながら勉強して作つくりました。

##出来たもの
出来たものは、ほぼCode for Funさんのと同じ玉取りゲームですが、少し改良を加え、スコアによって玉の動く速度を変えて、ある一定のスコアに達するとタップ一回ごとに玉の速度が若干早くなるという鬼畜仕様になっています。
追加の隠し要素としてランダムで流れてくる☆を取ると、15秒間ゲームオーバーになる黒いモヤットボール?の出現を止め、逆に高得点の赤玉の出現頻度が増えるというボーナス

元記事を表示

Androidで電卓アプリ作ってみた

# 概要
シンプルな電卓アプリです。
Androidのお勉強用に作りました。

Android Studio 3.6.2
TableLayout
![caluculation.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566570/f84b198c-cb91-b52c-3ca6-80b0526cab06.png)

# 苦労したこと
TableLayoutで行をまたいだボタンを作るところ。(+ボタン)

バグ修正。
・小数点を連打できないようにする
・+-×÷=を連打できないようにする
・=ボタンクリック後の挙動いろいろ。

## TableLayoutで行をまたいだボタンを作る方法
Table rowの中にLinearLayoutを入れ子にします。

“`activity_main.xml

元記事を表示

Android Studioで更新がエミュレーターに反映されないときの対処法

Android StudioからアプリをRunしたときに、編集した内容がエミュレータや実機に反映されないときの対処法です。下に書いてあるものほど面倒なので、上から順番に試すのがよいでしょう。

#まず確認すべきこと1
MainActivity.java(または.kt)の onCreateメソッドの中のsetContentView に正しいレイアウトが渡されているかを確認します。

#まず確認すべきこと2
本当に変更が反映されていないのかを確認します。例えばonCreateの中にSystem.out.println(“test”)などを記述します。標準出力は
View -> Tool Window -> Logcat で見ることができます

#(現在のバージョンでは削除)Instatnt Runをオフにする
File -> Setting -> Build,Execution,Deploymentにある、Enable Instant Run…のチェックを外す
これが原因のことが多いようですがAndroid Studio3.6.2ではその項目はありません。Instant Runの機能は

元記事を表示

@Parcelizeを使ってBundleに自作クラスをputする方法(Kotlin)

## はじめに

Androidアプリ開発では、フラグメントやアクティビティ間で値を受け渡すときに `Bundle` を使います。
`Bundle` にはデフォルトで `String` や `Int` などの一般的な型しか入れられず、自作クラスは `Parcelable` を継承したクラスでないと入れられません。

今回はかんたんに `Parcelable` を継承したクラスを実装する方法を紹介します。

## 環境

– Kotlin:1.3.61

## 実現方法

### ① `@Parcelize` を使う

Kotlin 1.1で追加された `@Parcelize` アノテーションを使います。
渡したい `data class` に `@Parcelize` アノテーションを付け、 `Parcelable` を継承することで、自動的に `Parcelable` を継承したクラスが生成されます。

“`diff:MonsterEntity.kt
+ import android.os.Parcelable
+ import kotlinx.android.parcel.Par

元記事を表示

[Android]GoogleMap でスタートとエンドマーカーの線を引く

# GoogleMap でスタートとエンドマーカーの線を引く

以下の手順となります。
・スタートとエンドマーカー作る
・Directions API実行
・polylines 作る
## スタートとエンドマーカー作る
[Google Map でピン立てる](https://qiita.com/myatthinkyu/items/6563ae9c53f7cfd14301)
## Directions API実行

“`
interface DirectionsInterface {
@Headers(“Content-Type: application/json;charset=UTF-8”)
@GET(“maps/api/directions/json?”)
suspend fun getDirections(
@Query(“destination”) destination: String,
@Query(“key”) key: String,
@Query(“mode”) mode: String,

元記事を表示

Wrap_ContentなTextViewに動的に長いテキストを設定して表示できない部分は…にする

# やりたいこと
高さがwrap_contentなTextViewに動的にテキストをセットして、長すぎて全文表示できない時にandroid:ellipsizeの設定を反映して…にしてほしい。
※maxLinesは機種ごと、端末の表示文字サイズ設定ごとに異なり、なるべく無駄なくたくさんテキストを表示したいので設定できないというとき。

cf ) 何もしないと
以下のようなTextViewに何も考えず長いテキストをセットすると、…は表示されず表示できるだけ表示して、UI上では入りきらなかった部分はなかったかのようになってしまう。場合によっては最後の行は文字が下の方見切れたりする。

“`xml

元記事を表示

[Android]Google Map でピン立てる

# Google Map上で長押しからピンを立てる

以下の手順となります。
・長押しのイベントを取得
・Google Mapからピン情報を取得
・マーカー立てる

## 長押しのイベントを取得
GoogleMap.OnMapLongClickListener を使いたいクラスから extends する

“`
class MapsActivity : AppCompatActivity(), GoogleMap.OnMapLongClickListener {
mMap.setOnMapLongClickListener(this)
“`

## Google Mapからピン情報を取得

“`
override fun onMapLongClick(point: LatLng) {
“`

overrideメソットからもらった point(LatLng)からマーカー作る

“`
var marker = MarkerOptions().position(point).title(“目的地”)
“`

## マーカー立てる

“`
private lateinit va

元記事を表示

OTHERカテゴリの最新記事