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

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

ホテルでAndroid端末からローカルサーバーにアクセスしようとして失敗してググった話

**ごめんなさい、めちゃめちゃ初歩的な話です。**
恥ずかしいですが、同じようなことにハマる方もいるかもしれないので記事にしました。

## やりたかったこと

– ローカルのサーバーにAndroid端末からアクセスして疎通確認をする
– PCとAndroid端末とで同じWifiに接続し、ローカルのIPアドレスをAndroidアプリ内で指定してローカル疎通する
– これを**ホテルでやる**

**そもそもローカルIP指定でやるなんてイケてないじゃん**というご指摘はごもっともです、甘んじて受け入れます。

## 失敗したこと

– 通信が失敗する、`No route to host`というエラー

失敗した理由としては、当該ホテルで[プライバシーセパレーター](https://www.buffalo.jp/support/faq/detail/16054.html)が設定してあり、同じルーターに無線通信している端末間の通信がブロックされているためだと思います。

ホテル東雲は[明記](https://www.hg-shinonome.co.jp/wp-content/themes/s

元記事を表示

キーボードの表示、非表示を切り替える方法

#はじめに
キーボードの表示、非表示に関しては、ほぼ全てのアプリで実装が必要になると言っても過言ではない要件ですよね。
いつも調べて思い出すことが多いので、簡単にまとめておこうと思います。

#キーボードの表示
表示する際の実装は以下

“`ViewExtensions.kt
fun View.showKeyboard(
flag: Int = 0
) {
(context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
.showSoftInput(this, flag)
}
“`

#キーボードの非表示
非表示にする際の実装は以下

“`ViewExtensions.kt
fun View.showKeyboard(
flag: Int = 0
) {
clearFocus()
context.getSystemService()?.hideSoftInputFromWindow(windo

元記事を表示

モバイルシステム技術検定(MCPC)2級の対策

皆様

お久しぶりです。satolabです。
最終更新から1年以上の月日が流れました。現在私は某IT企業でモバイル系のインフラエンジニアをしております。

この1年は慌ただしく、qiitaをはじめ情報発信や趣味の開発に中々時間を割けておりませんでした。

現在も四苦八苦の日々ですが、少しずつ情報発信の方も再開出来ればと思っております。

前置きが長くなりましたが、今回はちょっとニッチな資格である”MCPC2級”の対策について紹介したいと思います。

私は11月に受験し、無事合格出来ました。

##概要

モバイルシステム技術検定(通称:MCPC)は、モバイルシステムの提案、構築、運用のために必要となる知識とそのレベルを明示することによって、IT関連技術者の学習意欲の喚起を行い、その学習成果を検定(試験)により測定することが可能となります。
(引用: https://www.mcpc-jp.org/kentei/gaiyou.html)
試験は年に二回あり、後半の回はCBT方式で受けることができます。私は最寄りのテストセンターで受験しました。
なおボーダーは公開されていません。

##対

元記事を表示

Android開発におけるドキュメント作成”Dokka / KDoc”の導入手順

# Dokkaとは

“KDoc”形式で記載したコメントを、Javadocと同様な形でドキュメントを作成できる。
JavaとKotlinが混在したプロジェクトのドキュメントも生成可能

https://github.com/Kotlin/dokka

# 導入

“` project/build.gradle
buildscript {
ext {
dokka_version = “1.6.10”
}
dependencies {
classpath “org.jetbrains.dokka:dokka-gradle-plugin:${dokka_version}”
}
“`

“` app/build.gradle
apply plugin: “org.jetbrains.dokka”

android {}
dependencies {}

// dokkaHtml 用の設定
dokkaHtml.configure {
outputDirectory.set(new File(“${buildDir}/dokkaHtml”))

元記事を表示

Gradle 6.7.1以下 -> 6.8以上 にアップデートするとbuild.gradleのdependenciesのexcludeの挙動が変わる

# 概要
androidアプリを作成中、gradleをアップデートしたら、それまで問題なく使えていたアプリソース中のkotlinファイルでの`import kotlinx.coroutines.CoroutineDispatcher`に対して`Unresolved reference: CoroutineDispatcher`とエラーメッセージがつくようになってビルドができなくなった。 
アプリケーションモジュールのbuild.gradleのdependenciesに`implementation “org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:$kotlin_coroutine_ver”`を追加してやったところビルドが通るようになった。

## 理由
アプリで使っているcoroutineライブラリとpagingライブラリに入っているそれとがバージョンが違っていたのでpagingライブラリのほうから抜くためにアプリケーションモジュールのbuild.gradleのdependenciesで以下のようにしていたのだが、gradle 6.

元記事を表示

集中力を維持するためのポモドーロタイマー

学内の学生主体で進めるプロジェクトで「ユーザの集中力を持続させるシステム」を構築する機会がありました。

その際にポモドーロタイマーを用いて休憩時間を管理してくれるアプリを作成致しましたので、その内容について少しだけ触れさせて頂きます。

まず今回使用したのはReact Nativeです。iosとandroidの双方に対応できるクロスプラットフォームフレームワークを使用したいという理由から使用しました。

![Screenshot_20220110-015520_project1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2488482/7170aeca-6619-6bd5-c219-5c5e1918db46.jpeg)

上の画像が実際のアプリ画面です。
左上にタスクに取り組む時間を、右上に休憩時間を打ち込み、開始ボタンを押します。

指定した時間が過ぎると端末が振動し、テキストが変化します。

![Screenshot_20220110-015956_project1.jpg](https://

元記事を表示

Guide to app architectureからプラクティスを拾うメモ UIレイヤー編

https://developer.android.com/jetpack/guide?hl=en

上記から拾ってメモしておきます :pencil:

ちょっと分かりにくい部分として、最初に書いておきたいのが、UIレイヤーとUIは別で、UIレイヤーにはState holder(ViewModelなど)も含み、UIやUI elementはActivityなどを指すようです。

https://developer.android.com/jetpack/guide/ui-layer?hl=en より

(あとでまとめ記事的なのを作るかも?)

## Activityなどのアプリのコンポーネントにアプリのデータや状態を持ってはいけない

> Given the conditions of this environment, i

元記事を表示

EditTextのカーソルの行の位置を取得するには

EditTextのカーソル位置を取得するのは、調べたりするとすぐ出てきたりしますが、カーソルが何行目なのかを取得する方法が、無かったので忘れないようにする為、書いておく事にします。

# EditTextのカーソルの行の位置を取得する方法

“`
val layout: Layout = binding.editText.layout
val offset: Int = binding.editText.selectionEnd // カーソルの位置
val line = layout.getLineForOffset(offset) //引数に指定したoffsetの行番号(カーソルが何行目か)
val primaryHorizontal = layout.getPrimaryHorizontal(offset) // 引数に指定したoffsetの水平位置が返ってきます(カーソルが左端からの水平位置)
“`

EditTextのLayoutを使う事で、取得することができました。

# カーソルを上に移動させる方法

“`
binding.editText.setSele

元記事を表示

flutter_native_splash使ってみた

## 要約
– Splashとは?
– flutter_native_splashを使ってみる
– Android実装時の注意点
– OS 12の注意点
– Flutter2.5以上ではAndroidManifestの`meta date`を消す
– 感想
– 参考記事

## Splashとは?
アプリを立ち上げるときに一瞬表示される画面のことです。

## flutter_native_splashを使ってみる
`pubspec.yaml`にライブラリと`flutter_native_splash`の設定を追加する

“`pubspec.yaml
dependencies:
flutter_native_splash: ^1.3.3

flutter_native_splash:
color:

元記事を表示

アクティビティライフサイクルの大まかな流れを把握する

# この記事は

**[Android 公式 Doc のアクティビティライフサイクル](https://developer.android.com/guide/components/activities/activity-lifecycle#alc)** に、図など視覚情報を補足したもの。

**内容はあくまで参考にとどめてください**

以下のサンプルアプリ(仮称: `Lifecycle` アプリ) を使う。

* `Lifecycle` アプリには `MainActivity`, `SettingActivity` が存在する
* `Lifecycle` アプリ初回起動時は `MainActivity` が起動する
* `SettingActivity` は
* `MainActivity` から `startActivity` で起動する
* `finish()` で終了する

| MainActivity | SettingActivity |
| :–: | :–: |
| ![main_activity.png](https://qiita

元記事を表示

Expo (React Native) でViewを画像に変換してデバイスに保存する

# はじめに

React Nativeで新作アプリを作りました。

元記事を表示

VibratorManager を利用する

# Context.VIBRATOR が Deprecated に
API Level 31 (Android 12) より `getSystemService(Context.VIBRATOR)` が **Deprecated** になりました。
以降は同じく API Level 31 で追加された `getSystemService(Context.VIBRATOR_MANAGER_SERVICE)` の使用が推奨されます。

# Vibrator Manager の使い方

`AndroidManifest.xml` に次のパーミッションを追加します。

“`xml:AndroidManifest.xml

“`

つづいて `MainActivity.kt` に処理を記述します。
サンプルではこまかな点まで考慮しておりませんのでご了承ください。

“`kotlin:MainActivity.kt
class MainActivity : AppCompa

元記事を表示

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](https://quire.io)タイムライン(モバイル向け)の構造を初公開

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

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

##### [Quire](https://quire.io)モバイルアプリ用のタイムラインでは、以下を計画していました。

1. 横方向への無限日付スクロール
2. レンダリングオンデマンド(ROD)。ビューポートにあるときのみ実行されるWidgetのState

元記事を表示

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の作成手順を伝えることがで

元記事を表示

OTHERカテゴリの最新記事