- 1. Apple iPhone と Google Pixel の解像度 (dp) メモ
- 2. こんなソースコードはイヤだ-
- 3. Androidの全アプリのパッケージ名を取得する
- 4. スクリーンリーダーを使ってのVisual Studio CodeおよびAndroid StudioでのAndroidアプリ開発_Flutter編
- 5. スクリーンリーダーを使ってのAndroidアプリ開発_Flutter編
- 6. 【Android】RecyclerViewでスマートにコレクション画面の実装をする
- 7. さくっとDaggerをHiltに対応する
- 8. こんなソースコードはイヤだ-コメントのないコメントアウト
- 9. 今日は何のごみの日かを教えてくれるシステム(Trash_day_notification)2/3
- 10. Android開発アプリ_準備編
- 11. USBデバッグ有効時にアプリを操作不可能に
- 12. 【Flutter】Text 長い文字列に対応する
- 13. KotlinでRowmaアプリを作るチュートリアル
- 14. KivyアプリをBuildozerを使ってapkファイルにする(Ubuntu)
- 15. RecyclerViewでスワイプの削除
- 16. Androidアプリ個人開発キックオフ
- 17. AndroidX時代のIME作成 (1: 簡単なキーボードの作成)
- 18. Flutterでテキストの一部を簡単に装飾できるパッケージを作成した
- 19. Android EmulatorがFold設定に対応したので早速試してみた
- 20. Unity をライブラリ化して Android で使う
Apple iPhone と Google Pixel の解像度 (dp) メモ
# iPhone (iOS)
320px 端末そろそろ切られそうっすね (元祖 SE は 2016 年発売だし)
# Pixel (Android)
アップデートで数十 dp づつ伸びる Pixel くん
# 解像度
| 端末 | 解像度 |
|:–|:–:|
| iPhone 11 Pro Max/XS Max/11/XR | 414×896 |
| iPhone 11 Pro/X
こんなソースコードはイヤだ-
プログラムのソースコードのより良い書き方をまとめていこうと思います。
# openなクラスとabstractなクラス
“`sample.kt
open class UserAdapter() {
//継承先で定義する
open fun onClickedCell(user: User) {}//セルをクリックした時のイベント
private fun onClicked() {
onClickedCell(user)
}
}
“`[どのようにリファクタリングできるのか](https://www.sentohsharyoga.com/ja/bad_source_code/entry/open_class_and_abstract_class)
Androidの全アプリのパッケージ名を取得する
端末にインストールされてるアプリのパッケージ名をアプリ内のコードで取得する。
## 公式ドキュメント
https://developer.android.com/reference/android/content/pm/PackageManager#getInstalledPackages(int)`PackageManager#getInstalledPackages`を使えばいいらしい。
## コード
“`kotlin
val flag: Int = PackageManager.GET_META_DATA // ここに条件を指定するフラグを設定
// 全パッケージ取得(システムアプリ含む)
val packages: List= context.packageManager.getInstalledPackages(flag)
// パッケージ名だけに絞る
val packageNames: List= packages.map { it.packageName }
// 取得したらあとはご自由に
packageName
スクリーンリーダーを使ってのVisual Studio CodeおよびAndroid StudioでのAndroidアプリ開発_Flutter編
コマンドとメモ帳でも開発はできますが、コードエディタを使うほうが何かと便利です。
[NVDA](https://www.nvda.jp/) でも表題のエディタが使用できるので、私のメモを兼ねて投稿します。
—-## 準備
それぞれ下記を参考に設定をします。
[WindowsでFlutter入門(開発環境構築~デバッグ実行まで) │ Web備忘録](https://webbibouroku.com/Blog/Article/flutter-win)
[Visual Studio Codeで日本語化する方法[Windows] – Qiita](https://qiita.com/nanamesincos/items/5c48ff88a4eeef0a8631)
Visual Studio Codeで拡張機能を検索するときには
コントロール+シフト+X
からすることができます。## Visual Studio Code について
ファイルを編集して保存をするだけでホットリロードされます。
パッケージのインストールもコマンドなしでファイルに書き込んで保存でOKです。### 基
スクリーンリーダーを使ってのAndroidアプリ開発_Flutter編
これまで何度かトライしてきたスクリーンリーダーを使ってのAndroidアプリ開発。
2018年春にGoogleが第3の開発言語としてDartを加えました。
余り期待はしていませんでしたが、興味はあったので環境を整え、HelloWorldまで触ってみました。
今回も使用したスクリーンリーダーは [NVDA](https://www.nvda.jp/) です。
—–## 必要な物
jdk
android sdk
flutter
を準備します。
Android SDKは API29が必要でした。
flutter以外の準備は [スクリーンリーダーを使ってのAndroidアプリ開発_Monaca編](https://qiita.com/yama_1983/items/0cbfd73a9912009288f6) をご覧ください。
必須ではありませんが、Android Studio と Visual Studio Code があると、作業効率が上がります。## Flutterのインストール
[Flutter SDK releases – Flutter[(https://flutt
【Android】RecyclerViewでスマートにコレクション画面の実装をする
コレクション画面(=なにかしらの一覧画面)を実装する際にRecyclerViewをよく使うと思います。
僕としては複雑なViewTypeを比較的簡単に作り分けるために、[Epoxy](https://github.com/airbnb/epoxy)のような便利なライブラリを使うことが多いのですが、弊社の新人研修の課題で久しぶりにAdapterを書く機会があったので、その時の実装をメモ程度に残しておきます。## 差分を比較する
どの値を比較して、差分とみなすかを定義します。
下記では単に比較対象の `equals` に従って比較しています。“`MyDiffable.kt
interface Diffable {
// otherと同じIDを持つかどうか
fun isTheSame(other: Diffable) = equals(other)// otherと完全一致するかどうか
fun isContentsTheSame(other: Diffable) = equals(other)
}private class Callback(
さくっとDaggerをHiltに対応する
# GradlePluginを追加
“`gradle:build.gradle
buildscript {
ext.hilt_version = ‘2.28-alpha’
repositories {
…
google()
}
dependencies {
…
classpath “com.google.dagger:hilt-android-gradle-plugin:$hilt_version”
}
}
“`# Dependencyを追加
“`gradle:app/build.gradle
…
apply plugin: ‘dagger.hilt.android.plugin’android {
…
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}d
こんなソースコードはイヤだ-コメントのないコメントアウト
プログラムのソースコードのより良い書き方をまとめていこうと思います。
# コメントのないコメントアウト
“`sample.kt
fun example() {
execute1()
//execute2()
execute3()
}
“`[どのようにリファクタリングできるのか](https://www.sentohsharyoga.com/ja/bad_source_code/entry/comment_out_without_comment)
今日は何のごみの日かを教えてくれるシステム(Trash_day_notification)2/3
# 今日は何のごみの日かを教えてくれるシステム(Trash_day_notification)
## 前回の記事
[今日は何のごみの日かを教えてくれるシステム(Trash_day_notification)1/3](https://qiita.com/kurikurisan/items/cb0e069c13deac3e4894#line-notify設定)
## 困っていること
ごみの日がどうしても覚えられない、、
私の家には、庭があって、ごみを一時的にためておくことができるために、ごみをいつでも捨てれるのは素晴らしいのですが、
ごみの日を覚えられないため、基本的に朝の用事があるときに、周りを見て、今日何のごみの日かを確認している。
-> これが非常に面倒くさい、、ということで、通知してくれるシステムを作ろう!
## 機能
* 毎朝8時30分にごみの日をLINEに通知する([前回の記事](https://qiita.com/kurikurisan/items/cb0e069c13deac3e4894#line-notify設定))
* なんのごみがストックされているかが
Android開発アプリ_準備編
# テーマ決め
下記のアイデアを出して、”オンライン飲み会の終了時間管理”アプリを選定。– オンラインジェスチャーゲーム ×
”VS嵐”の番組で人気のジェスチェーゲームをオンラインでできたら楽しそうと思い発案。
既存のアプリは1台のスマホを使って行うものだったので、手元のスマホにそれぞれがアプリをダウンロードして行うやり方で考えたが、iPhoneの人がいた場合そちらのアプリ開発も必要なため断念
– 複数人でゴルフに行くときの最適なゴルフ場決定 △
趣味のゴルフのいつも迷う問題から発案。複数人でゴルフに行くときに、みんなの移動距離ができるだけ短くなる最適なゴルフ場を決定できるアプリがあればありがたい。しかし、最近ゴルフに行っていないので意欲がわかず断念。
– オンライン飲み会の終了時間管理 〇
コロナの影響でオンライン飲み会を行うことが増え、みんながしみじみ感じている問題。
既存のアプリでは、この機能をもったオンライン会議はあったが、既存のオンライン会議に+αするものはなさそうだったでそのアプローチで作成したい。# 機能洗い出し
最低限下記の機能を
USBデバッグ有効時にアプリを操作不可能に
# はじめに
USBデバッグが有効な場合に、ダイアログを出して、操作させないアプリがあったので、自分もやってみた。
# 実装
USBデバッグが有効かどうかは、 `Settings.Global.ADB_ENABLED` で取得できる。
https://developer.android.com/reference/android/provider/Settings.Global#ADB_ENABLED“`kotlin:MainActivity.kt
class MainActivity : AppCompatActivity(R.layout.activity_main) {override fun onResume() {
super.onResume()val isAdbEnabled = Settings.Global.getInt(contentResolver, Settings.Global.ADB_ENABLED)
if (isAdbEnabled == 1) {
Aler
【Flutter】Text 長い文字列に対応する
## 事象
文字が長いと以下のようにエラーが出てしまいます。“`
A RenderFlex overflowed by 1312 pixels on the right.
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/fd0bdead-05b7-7d64-cb50-ea5c15f5799d.png)
Swiftなどだと、
UILabelの`truncate`パラメータ等で調整します。## 解決方法
Textの`Overflow`パラメータを使用する。
“`dart:修正前
Text(categoryName,
style: TextStyle(
fontFamily: ‘SFProDisplay’,
KotlinでRowmaアプリを作るチュートリアル
**ROSロボットにトピックを送信するAndroidアプリ**を作るチュートリアルです。
通信にはRowmaというシステムを使っています。Rowmaについて詳しくは [Rowma: ROSロボットネットワーク化システム](https://qiita.com/asmsuechan/items/5f0fe8648ddfca1e5934) に書いてます。
完成図はこちら。ロボット一覧を表示してどれかをタップしたらロボットにアクセスして/chatterにトピックを送っています。
![Peek 2020-06-14 19-32.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131581/770b8e4c-89a6-4628-8eed-206f727f468f.gif)
## 準備
Android Studioのバージョン: 4.0
Kotlinのバージョン: 1.3.72Rowma ROSパッケージを起動しておきます。
インストールはこちらのコマンドから。
“`bash
python <(cu
KivyアプリをBuildozerを使ってapkファイルにする(Ubuntu)
# はじめに
機械学習を使ったAndroidアプリを作ろうと思っていて、
Pythonでアプリが作れるKivyが便利なので使っていたが、
Kivyアプリをapkファイルにするときにいろいろハマったのでうまくいった手順をメモ。# 環境
– Ubuntu Server 20.04 ※AWSの無料枠で使用できるEC2インスタンスを使ったが、デフォルトの設定だとストレージが足りなくなるので、ストレージの容量を16GBにする
– Kivy 11.1
– Buildozer 1.2.0# 手順
## 必要なパッケージをインストール“`terminal
sudo apt update
sudo apt upgrade
sudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev
pip3 install –us
RecyclerViewでスワイプの削除
# はじめに
ここでは、RecyclerViewのアイテムをスワイプ削除する方法について書いていきます。 これまでの実装については[前回](https://qiita.com/karass/items/a62d27a16b185abf47f0)を参照してください。# 目標
今回は下のGIFのようにRecyclerViewのアイテムをスワイプで削除できようにします。
# 実装
Gradleには、特に追加するものはありません。
## Activity
削除機能を実装するためのコードを、今回はActivityに書きました。“`MainActivity.kt
class MainActivity : AppCompatActivity() {…
private val swipeToDismissTou
Androidアプリ個人開発キックオフ
# はじめに
学んだこと整理するためにもブログでまとめていこうと思います。
他の人の役に立てれば幸いです。間違いなどあれば指摘して頂ければと思います。
また、アドバイスなどもあればコメントいただけると助かります。# 背景
残業禁止となり、副業を探していたが下記の理由から、個人開発で1個実績を作り副業につなげたいと思う– C,C++(現保有スキル)で勤務日数が少ない案件がない
– アプリ開発の案件が多い
– 以前からAndroidアプリ開発に興味があった
– C以外の言語を学ぶいい機会である# 目標
自作でアプリ開発を行い、GooglePlayストアで公開する。– RA~ITを一通り自分で実施できること
– アプリ開発に必要なjavaの知識を理解する# 開発に使用する言語選定
下記候補から、将来的な汎用性を考慮してJavaで行うことに決定。(Koltinと迷いましたが。)– C/C++
– 現業務のスキルアップにも使えるが、AndroidStudio(アプリ開発の環境)を使用するとjavaなどに比べて工数がかかりそう。
– Java
– Andr
AndroidX時代のIME作成 (1: 簡単なキーボードの作成)
相変わらず日本語圏でのIME作成に関する記事が少なめなので、技術者ではなくなったものの発信は続けていきます。
今回は[公式ドキュメント](https://developer.android.com/guide/topics/text/creating-input-method?hl=ja)にも紹介されているため今までお世話になってきた方も多いであろう、KeyboardおよびKeyboardViewの代替を試みるものになっています。
## なにがあったか
API Level 29から**Keyboardに関するクラスが一挙に非推奨となりました。**
実際これらのクラスのオンラインドキュメントを読むと別手法を取るよう勧告されています。
## どうするか
新しい仕組みが用意されているわけでもないので、いちから自作します。
### Viewまわり
まずは res/layout/keyboard.xml にViewレイアウトを作成。Google日本語入力の電話配列を意識して今回はGridLayoutを採用。
“`xml
Flutterでテキストの一部を簡単に装飾できるパッケージを作成した
# はじめに
こんにちは.AndroidとiOSの両アプリを同じコードで作れるFlutterに惹かれて,ここ1ヶ月くらい色々触ってみました.
レイアウトもDartファイル内に記述できてめちゃくちゃ書きやすいですが,気になる点もいくつかありました.特に不便に感じたのが,以下のようなテキストの一部を装飾することです.– テキスト内のURLやメールをリンクにする
– テキストの一部をタップした時になにか動作させる(画面遷移させるとか)
– テキストの一部のスタイルを変える(色とか)Flutterでは,これらのようなテキストの一部に変化をもたせたい場合は,以下のような感じで[RichText](https://api.flutter.dev/flutter/widgets/RichText-class.html)と[InlineSpan](https://api.flutter.dev/flutter/painting/InlineSpan-class.html)で書いていく必要があります.
“` dart
RichText(
text: TextSpan(
text
Android EmulatorがFold設定に対応したので早速試してみた
# はじめに
– Android11ではフォルダブル端末の折り曲げている角度を取得できるヒンジ角度センサをサポートします。
– これまでのエミュレータでは実験的機能として折り曲げの調整ができる機能が追加されましたが、30.0.14(たしか)あたりで密かに一旦消えた状態となりました。
– 6/12にリリースされた、Emulatorの30.0.17で対応したようなので、少し試してみました。# 参考
– https://androidstudio.googleblog.com/2020/06/emulator-30017-canary.html# エミュレータにFold機能を対応させる
– 環境
– Android Emulator 30.0.17 (SDKManagerで取得)
– Android Studio 4.2 Canary1
– その他、Android11のイメージのEmulatorなど
– エミュレータの設定
– エミュレータのセンサ関連の挙動は、`~/.android/avd/avdName.avd/config.ini`で設定できます
Unity をライブラリ化して Android で使う
基本的には [UnityをAndroidアプリの中に埋め込む](https://qiita.com/niusounds/items/ba3c676cfd47b542a6b0) 通りにやればできると思います。少し時間が経って新しくなっているので、箇所箇所でエラーが出たので、その内容を書いています。
# 前提
名称 | バージョン
—————|———–
Mac OS | 10.15.5
Unity | 2019.3.0f6
Android Studio | 4.0# 補足一覧
## エラーでは無いですが
初めてやると実行ボタンの ▶︎ が非活性でどうしようと思うかもしれないが、Android Stuido で起動すると、すぐGradleビルドが実行されて、裏側でモジュールのダウンロードとなどいろいろやってくれています。それが完了すれば押せるようになるので、待つべし。よく見るとAndroid Studioの下の方で実行中のメッセージが出ているはずです。## GradleプロジェクトをAndr