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

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

こんなソースコードはイヤだ-コメントのないコメントアウト

プログラムのソースコードのより良い書き方をまとめていこうと思います。

# コメントのないコメントアウト

“`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.72

Rowma 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

元記事を表示

クラス名を含むメソッド名

プログラムのソースコードのより良い書き方をまとめていこうと思います。

# クラス名を含むメソッド名

“`sample.kt
class Video {
fun playVideo() {
//…
}

fun pauseVideo() {
//…
}

fun stopVideo() {
//…
}
}
“`

[どのようにリファクタリングできるのか](https://www.sentohsharyoga.com/ja/bad_source_code/entry/method_name_include_class_name)

元記事を表示

[Android]WindowIsFloating の動作を確認する

# はじめに

Activity や DialogFragment の設定には WindowIsFloating がありますが、これがドキュメントを見ただけではどんな動作をするかわかりません。WindowIsFloating を True にしたときには独特の挙動があり、分かりづらい点がありました。今回は WindowIsFloating の動作と注意点を備忘録としてまとめられたらなと思います。

# WindowIsFloating とは?

WindowIsFloating は Window を浮遊したような感じに表示させるためのフラグになります。下記のような感じで Styles.xml にて変更し、AndroidManifest.xml で適用すれば WindowIsFloating の設定が反映され見た目が変わるようになります。

**Styles.xml の Style の Item として android:windowIsFloatin を指定してやる**

“`xml