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

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

AndroiderのiOS奮闘記~UIKitとは~

#この記事は
iOSのキャッチアップを余儀なくされた生粋のAndroiderの奮闘日記です。
単発の記事になりますが、ご容赦ください。

#UIKitとは
ドキュメント読んでいきます。
>Construct and manage a graphical, event-driven user interface for your iOS or tvOS app.

iOSとtvOS用に作られたもので、イベント駆動なインターフェースを提供してくれるフレームワークのようです。
iOSシステムとのインタラクティブを管理してくれるようです。

全然知らなかったけど、Apple社はテレビ用のOSも出してるんや。

注意書きとして、UIKitのクラスはメインスレッドのみで使用するのがルールみたいです。

#SwiftUIとの違いは
SwiftUIもiOSでUIを描画するためのフレームワークですが、新しいものみたいです。
ただ、一つのプロジェクトに両者をブリッジできるようなので、組み合わせて使える。

AndroidでもJetpackComposeを既存のものに組み込めるので、それと同じかなと。

#

元記事を表示

[Android]かんたん強制バージョンアップ

#Sirenとは
簡単に強制バージョンアップが実装できるライブラリです。
Android,iOS共に存在しますが、今回はAndroidで試します。

#設定
まずは、root直下のgradleファイルにて、jitpackリポジトリから取ってこれるようにします。

“`groovy
allprojects {
repositories {
maven { url “https://jitpack.io” }
}
}
“`

そして、appモジュールのgradleファイルに依存関係を追加。

“`groovy
dependencies {
implementation ‘com.github.eggheadgames:Siren:1.5.2’
}
“`

Sirenは、jsonを購読して強制バージョンアップする必要があるか否かを判断します。

“`json
{ “hoge.fuga.app”:
{
“minVersionName”: “1.5.0”,
“minVersionCode”: “

元記事を表示

カレンダーをいい感じに実装する方法

#はじめに
Androidの標準カレンダー、非常に使いづらい上に、拡張性なくて辛いと感じたことはありませんか?
最近になっていい感じに実装可能なカレンダーのライブラリを発見したので、紹介したいと思います。

#CalendarView
今回ご紹介させていただくのは、以下ライブラリです。
https://github.com/kizitonwose/CalendarView

このライブラリは3年ほど前に作成されたライブラリのようですが、拡張性が高く、内部もKotlinで実装されており、Kotlinとの親和性が高い点信用ができます。

上記githubにサンプルがあるので詳細に関しましてはそちらをみていただければと思いますが、簡単に実装方法をまとめたいと思います。

#1. ライブラリの追加

まずはじめにappレベルのbuild.gradleに以下を追加する必要があります。

“`
dependencies {
implementation ‘com.github.kizitonwose:CalendarView:
}
“`

#2. レイアウト

元記事を表示

MaterialButtonでテキストカラーが変更されない時の対処法

#初めに
最近のアプリでは、マテリアルデザインを基に作っているアプリが多いかと思いますが、そこで自分がつまづいたことをメモしておこうと思います。

##つまづいたこと
MaterialButtonに対してのテキストや、スタイルの設定は直接書き込むことができるが、あまり好ましくないので、皆さんは`styles.xml`や`textAppearance.xml`にまとめておいてあるかと思います。
そこで、今回つまづいたことはMaterialButtonのテキストに対して設定が反映されていないということでした。

###解決方法
解決策自体は、すごく単純なものでした。
普通、テキストに対しての設定なので`textAppearance.xml`に対して全ての設定を書いてしまうかと思いますが、テキストの色自体はMaterialButtonの管轄内なので`styles.xml`に対して記述をしないと意味がありません。
逆に、テキストの色以外はMaterialButtonが把握していなくてもいい内容なため、MaterialButtonの管轄外になります。
したがって、テキストカラーへの設定は`sty

元記事を表示

Android API 31以降の自機IPの取得

API31からWifiManager経由の自分のAndroidのIPアドレス取得が非推奨になりました。そのままのコードでもとりあえず動作するようですけど、修正するとしたら次のようにConnectivityManagerを使うようにする必要があります。

# API 31以前のWifiManagerによるIPアドレスの取得

“`kotlin
val manager: WifiManager =this.applicationContext.getSystemService(WIFI_SERVICE) as WifiManager
val ip = manager.connectionInfo.ipAddress
Log.i(TAG,arrayOf(ip,ip shr 8,ip shr 16,ip shr 24).map{it and 0xff}.joinToString(“.”))
“`

IPはIntで取得されるので、1バイトずつ分割して表示しています。例えば192.168.1.1のように表示されます。

# API 31 以降の場合

build.gradle(ap

元記事を表示

Flutterベースのモバイル向けタイムラインの作成

## 初めて:Quireタイムライン(モバイル向け)の構造を初公開

2018年に初めてFlutterベースのアプリを作ったときは、とても楽しく興奮しました。それから3年経ち、Quireアプリもかなり充実して、従来のモバイル向けプロジェクト管理アプリの域を超えるまでになりました。Quireモバイルアプリの現行バージョンは、階層表示、ボード表示だけでなく、タイムライン表示にも対応しています。

モバイルアプリ向けのタイムライン表示の作成を決めたときは、簡単にできるとは思いませんでした。当時は類似の既成コンポーネントもなかったためですが、驚いたのは、インターネットでタイムライン表示の構造についての情報も見当たらなかったことです。そこで、いちかばちか、自分たちで作ってみることにしました。

##### Quireモバイルアプリ用のタイムラインでは、以下を計画していました。

1. 横方向への無限日付スクロール
2. レンダリングオンデマンド(ROD)。ビューポートにあるときのみ実行されるWidgetのState
3. 任意の位置に素早く配置
4. 操作がかんたんで使いやすいインターフェースと

元記事を表示

Cordovaアプリケーション開発に、NoSQLドキュメント指向組み込みデータベースCouchbase Liteを使うには?(Androidネイティブプラグイン構築手順)

## はじめに

先に、下記の記事を(iOSネイティブプラグイン構築について)発表しました。

https://qiita.com/yoshiyuki_kono/items/9122beb6b86847a82788

CordovaとCouchbase Liteに関する基本については、そちらをご覧ください。

## チュートリアル紹介

Couchbase公式チュートリアルとして下記があります。

https://docs.couchbase.com/tutorials/hotel-lister/android.html

本稿では、CordovaアプリケーションでCouchbase Liteを使用する方法を解説します。

このチュートリアルでは、AndroidでCouchbase Lite2.xとインターフェイスするCordovaプラグインを構築する方法について説明しています。このチュートリアルでは、フロントエンドWebアプリレイヤーの構築にIonicを使用しています。

チュートリアルでは、Couchbase Liteデータベースに保存されているホテルに関する情報を表示および検索す

元記事を表示

THETA PLUG-IN STOREへのプラグイン公開手順(公開手続き編)

## はじめに
リコーの @KA-2 です。

弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VRICOH THETA Z1は、OSにAndroidを採用しています。Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます(詳細は本記事の末尾を参照)。

本記事は、[THETA PLUG-IN STORE](https://pluginstore.theta360.com/)に皆様の成果物を公開する手順の2回目となります。

– [THETA PLUG-IN STOREへのプラグイン公開手順(リリースビルド編)](https://qiita.com/KA-2/items/d8f4cb1fa4dd4d654164)
– THETA PLUG-IN STOREへのプラグイン公開手順(公開手続き編)※本記事です

前回の記事にて、公開するapkの作成手順を伝えることがで

元記事を表示

【Android Studio】High and Lowゲーム

#はじめに
翔泳社 作ればわかる! Androidプログラミング で学習したことのアウトプットです。
Android Studioを使用して簡単なアプリを作成します。

#High and Lowゲーム
コンピューターのカードに対してプレイヤーのカードが大きい(High)か小さい(Low)かを予想するゲーム。
予想が当たれば「あたり」がカウントされ、外れれば「はずれ」がカウントされる。
「あたり」が5回に達すればプレイヤーの勝ち、「はずれ」が5回に達すればコンピューターの勝ちとなる。

#学んだこと
・TextView, Button, ImageViewの扱い方。
・アプリのライフサイクル(onCreate, onResume)
・Kotlinの基本的な文法。

#プロジェクトの作成
Empty projectを選択。言語はKotlinを使用。
![NewProject.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471428/98f6b772-5330-f98e-4ca9-4ffd630ce8

元記事を表示

Android アプリを個人開発でリリースした話

#はじめに
この度、Androidアプリを個人開発でリリースしました。
過程でやったこと・戸惑ったことを書いていきます。

#想定読者
個人開発でアプリをリリースしたことがなく、
これから個人開発でアプリをリリースしてみようと思う方

#この記事に書いていないこと
以下については記載していません。
・アプリの実装
・Google Play配信の具体的な方法
・各種ツールの使い方
公式を当たるのが最新かつ間違いないはずです。
手段を知らなければ公式を参照することもできないので
手段を知るきっかけにしていただければと思います。

#宣伝

個人開発を行ったアプリはメモ帳です。
Android 10からAndroid標準のバブルを利用したメモ帳です。
もしよかったらDLしてみてください。
[Unity + PlayFab を Android で利用する際の設定

# 発生する問題

Unity で PlayFab を Android 環境で実行する際に以下のようなエラーが発生しクラッシュした場合は対処が必要です。

“`
AndroidRuntime FATAL EXCEPTION: Thread-6
AndroidRuntime Process: , PID: 32155
AndroidRuntime java.lang.NoClassDefFoundError: Failed resolution of: Lokhttp3/OkHttpClient$Builder;
AndroidRuntime at com.microsoft.xplatcppsdk_internal.HttpRequest.(HttpRequest.java:24)
AndroidRuntime Caused by: java.lang.ClassNotFoundException: Didn’t find class “okhttp3.OkHttpClient$Builder” on path: DexPathLis

元記事を表示

Androidで背景タップ時にキーボードを閉じる

Androidの文字入力がある画面で表示されたソフトウェアキーボードは、デフォルトではユーザが閉じる操作をしない限り表示され続けます。
EditTextなどの対象のView以外をタップしたときにフォーカスを外してキーボードを非表示にしたい、という要件に対応します。
__注: composeは考慮していません__

# タップイベントをフックする

`Activity.dispatchTouchEvent(MotionEvent)`を使います。
筆者は執筆時にnavigationを利用していたので、目的のFragmentではなく親のActivityに実装しました

“`kotlin
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
binding.navHostFragment.requestFocus()
return super.dispatchTouchEvent(ev)
}

“`

`requestFocus()`ではフォーカスを移動しています。フォーカス

元記事を表示

AndroidでPermissionをリクエストするとき

## AndroidでPermissionをリクエストするとき

ネットで探すと、未だにリクエストを開発者側でハンドリングする記事ばかり出てきます。

しかし[公式ドキュメント](https://developer.android.com/training/permissions/requesting?hl=ja)では、**RequestPermission**や**RequestMultiplePermissions**のコントラクトを使用した方がいいと書いてあります。

> 従来からある方法では、権限リクエストの一部として開発者自身がリクエスト コードを管理し、このリクエスト コードを権限コールバックのロジックに含めます。別の方法として、AndroidX ライブラリに含まれる RequestPermission コントラクトを使用して、システムに権限リクエスト コードの管理を許可することもできます。RequestPermission コントラクトを使用するとロジックが簡素化されるため、可能な場合は使用することをおすすめします。

使用例は以下の通り
Kotlin + Jetpack

元記事を表示

Androidアプリで使用するアプリ固有データまとめ

# 目的
– Android アプリで使用するアプリ固有データの種類・保存についてまとめる。

# Androidアプリデータの保存方法による分類

– Androidでアプリが保存するデータ(以下「アプリデータ」)の種類には以下がある。

(1) アプリ固有のファイル
アプリ独自のファイルで、他のアプリから共有しないファイル。アプリ独自フォーマットのファイル等。

(2) 共有ファイル
メディアやドキュメントなど、他のアプリと共有可能なファイル。一般的なフォーマットで他アプリから利用可能な画像・音声・動画ファイル等。

(3) 設定データ
アプリ固有の設定データ。他アプリからアクセスできない領域へキーと値のペアで保存する。

(4) データベース
構造化したデータを非公開のデータベースへ保存する。

– アクセス手段・必要な許可・アプリのアンインストール時に削除されるかどうかはそれぞれ異なる。
– 詳細は Android developers [データ ストレージとファイル ストレージの概要][link0] 参照。

# ア

元記事を表示

Android Layoutの種類

##レイアウト

– LinearLayout(線形レイアウト)
– すべての子ビューを垂直又は水平の一方向に揃えるビューグループ
– android:orientation属性によりレイアウトの方向を指定します。
– 縦方向に表示:android:orientation=”vartical”
– 横方向に表示:android:orientation=”horizontial”
– 垂直方向のリストは、幅に関係なく、一つの行に1つの子ビューしかない。
– 水平方向のリストは、1行分の高さしかない。

– RelativeLayout(相対レイアウト)
– 子ビューを相対位置に表示するビューグループ
– ConstraintLayout
– フラットなビュー改装を持つ大きくて複雑なレイアウトを作成可能
– RelativeLayoutよりも柔軟性がありAndroid StudioのLayoutEditorで使用しやすくなっている。
– MotionLayout
– アプリ内のモーションとウィ

元記事を表示

リフレクションでKotlinの要素を取得する【Javaリフレクション編】

Androidの単体テストにあたり、privateなクラスやメソッドにアクセスするために使用するリフレクションについてまとめました。

【注意点】
この記事では、筆者がリフレクションを一緒くたに認識していた背景から、KotlinでJavaリフレクションを使用しています。
しかし実際はKotlinにはKotlinリフレクションが存在するため、あえてKotlinでJavaリフレクションを使うのであれば、その理由を明確にできることが望ましいはずです。
次回は、Kotlinリフレクションをまとめます。

##リフレクションとは
リフレクション(reflection)とは、反射、内省、熟考という意味の英単語です。
JavaやKotlinでは、クラスやコンストラクタ、メソッドなどの情報の取得、必要に応じて書き替えるための仕組みを指します。
Java:[Trail: The Reflection API (The Java™ Tutorials)](https://docs.oracle.com/javase/tutorial/reflect/)

リフレクションを使うことで、通常はアクセスできな

元記事を表示

CollapsingToolbarLayoutとSwipeRefreshLayoutの併用

よくあるプロフィール画面のヘッダー画像をparallaxにしつつ、Pull-to-Refreshもできる画面を作ってみたいと思い、いざ実装してみたら一工夫必要だったので記事にしました。

# この記事で紹介すること
goal
この画面のような**prallaxなヘッダー画像**と**Pull-to-Refresh**が共存した画面の実装方法を紹介します。

# 結論
そのまま併用すると、スクロール仕切っていないのにPull-to-Refreshが発動してしまいます。
解決策として、AppBarLayout.OnOffsetChangedListenerにSwipeRefreshLayout.isEnabledを上書きする処理を登録します。

AppBarLayout.OnOffsetChangedListenerが受け取るve

元記事を表示

FlutetrでrequestPermissionのエラー

### FlutetrでrequestPermissionのエラー

Flutterで通知アプリ仕込んでます。

あと少しだったのですが、このエラーが出てAndroid版のビルドはできるのですが、アプリが起動しない。この時点でiOS版はビルド通っていた。

エラーは

“`
E/flutter ( 5307): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: MissingPluginException(No implementation found for method Messaging#requestPermission on channel plugins.flutter.io/firebase_messaging)
E/flutter ( 5307): #0 convertPlatformException (package:firebase_messaging_platform_interface/src/method_channel/utils/exception.dart:1

元記事を表示

【Android&Firebase】Googleログイン実装のDeprecated箇所をリファクタリングしてみた

# はじめに

皆さん、ごきげんよう!れぶです!
2回目のQiitaへの投稿になります。新年早々どこにも外出せずに執筆していきます。

今回の記事は、Firebaseを用いてAndroidアプリへGoogleログイン機能を実装することに関した内容になります。具体的には、Firebaseの公式ドキュメントに掲載されているコードの中で、Deprecated箇所(startActivityForResultとonActivityResult)があるので、リファクタリングしていきます。Googleログイン機能のリファクタリング実装が書かれた記事はあまりないと感じたので、自身がJavaで書いたコードをもとに紹介します。

それでは、参りましょう!!

# この記事の対象者

* 今後Firebase Authenticationを用いて、AndroidアプリにGoogleログイン機能を実装したい方
* 既にGoogleログイン機能を実装済みだけど、Deprecated箇所のリファクタリングが知りたい方

# 開発環境

* Mac
* Android Studio(4.1.2)
* Fireba

元記事を表示

Couchbase Lite開発: Kotlin拡張機能

## はじめに

Couchbase Lite Android 3.0.0-beta02では、Kotlinアプリ開発における慣用的なプログラミング作法のサポートが導入されています。

これによって、Kotlin開発者は、一般的なKotlinアプリケーション開発に用いられる実装パターンを用いてアプリを構築できるようになりました。Couchbase Kotlin SDKは、Couchbase Lite for Androidとシームレスに統合されており、Java APIと同等の機能を備えています。

Couchbaseをモバイルアプリケーションで利用する意義については、以下の記事をご参考ください。

https://qiita.com/yoshiyuki_kono/items/3abd5e32801060a449d2

## Kotlin拡張機能

## 概要

Kotlin開発者は、Couchbase Liteを利用したアプリケーション構築のために、Java APIとの完全な互換性に加えて、Kotlin拡張機能を利用できます。

Kotlin拡張機能パッケージには以下のサポートが含まれ

元記事を表示

OTHERカテゴリの最新記事