- 1. 集中力を維持するためのポモドーロタイマー
- 2. Guide to app architectureからプラクティスを拾うメモ UIレイヤー編
- 3. EditTextのカーソルの行の位置を取得するには
- 4. flutter_native_splash使ってみた
- 5. アクティビティライフサイクルの大まかな流れを把握する
- 6. Expo (React Native) でViewを画像に変換してデバイスに保存する
- 7. VibratorManager を利用する
- 8. AndroiderのiOS奮闘記~UIKitとは~
- 9. [Android]かんたん強制バージョンアップ
- 10. カレンダーをいい感じに実装する方法
- 11. MaterialButtonでテキストカラーが変更されない時の対処法
- 12. Android API 31以降の自機IPの取得
- 13. Flutterベースのモバイル向けタイムラインの作成
- 14. Cordovaアプリケーション開発に、NoSQLドキュメント指向組み込みデータベースCouchbase Liteを使うには?(Androidネイティブプラグイン構築手順)
- 15. THETA PLUG-IN STOREへのプラグイン公開手順(公開手続き編)
- 16. 【Android Studio】High and Lowゲーム
- 17. Android アプリを個人開発でリリースした話
- 18. Unity + PlayFab を Android で利用した時に実行時にクラッシュする問題
- 19. Androidで背景タップ時にキーボードを閉じる
- 20. AndroidでPermissionをリクエストするとき
集中力を維持するためのポモドーロタイマー
学内の学生主体で進めるプロジェクトで「ユーザの集中力を持続させるシステム」を構築する機会がありました。
その際にポモドーロタイマーを用いて休憩時間を管理してくれるアプリを作成致しましたので、その内容について少しだけ触れさせて頂きます。
まず今回使用したのは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:
(あとでまとめ記事的なのを作るかも?)
## Activityなどのアプリのコンポーネントにアプリのデータや状態を持ってはいけない
> Given the conditions of this environment, it’s possible for your app components to be launched individually and out-of-order, and the **operating system or user can destroy them at any time.** Because these events aren’t under your control, **you shouldn’t store or keep in memory any application data or state in your app components**, and your app co
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.3flutter_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で新作アプリを作りました。
久しぶりにカスみたいなアプリ作りました
姓名判断っぽい画像を捏造できます
12/30に完成したんですが、Appleさんに怪しい占いアプリと勘違いされ、なかなか出せませんでした#嘘姓名判断Androidhttps://t.co/IyslOklSkl pic.t
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タイムライン(モバイル向け)の構造を初公開
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 VやRICOH 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