- 1. THETAプラグインで連続フレームにTensorFlow Liteの物体認識をかける
- 2. AndroidのPreference系を簡単に扱いたい
- 3. Androidをペンタブレットにする(2/3)
- 4. MediaSessionを使って秒で音楽アプリを作成する(超簡易版)
- 5. Delegated Properties で SharedPreferences を綺麗にしてみた
- 6. flutter run で起きたエラー(No supported devices connected.)
- 7. Flutter環境構築 – 2(Xcode・iOSシミュレーターセットアップ編)
- 8. docker image「appium/appium」ではandroid webviewのテスト実行がエラーとなるので対処
- 9. WebViewのvideoで表示されるあの画像(▶)を消す方法
- 10. GitLab で Unity の Android アプリを自動ビルドするようにしてみた
- 11. 【Flutter】BLoCパターンとは?
- 12. [Flutter] Dribbbleデザイン、そのまま作ろう その15
- 13. DataBinding で ListViewを表示
- 14. AndroidのCIとテストアプリ配信をサービスアカウントを使ったGithubActions+AppDistributionに載せ替える
- 15. ターミナルからAndroidエミュレーターを起動
- 16. lifecycle-livedata-ktx を使ってみた
- 17. Androidをペンタブレットにする(1/3)
- 18. GitLab Runner で Unity の Android SDK が見つからない場合の対処法
- 19. Proxy有りでUnityのAndroidビルド
- 20. 【Android】build.gradleからfastlaneでversionNameを取得する
THETAプラグインで連続フレームにTensorFlow Liteの物体認識をかける
## はじめに
リコーの @KA-2 です。弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VやRICOH THETA Z1は、OSにAndroidを採用しています。Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます(詳細は本記事の末尾を参照)。今回は、[THETAプラグインでライブプリビューを扱いやすくする](https://qiita.com/KA-2/items/cef05a4960663bd2ba2f)の続編です。
上記記事の末尾で予告したとおり、THETAのライブプリビューにTensorFlow LiteのObject Detectionをかけ、その結果を利用します。
利用といっても今回はひとまず、「THETAの姿勢基準(local座標系)で、特定物を横方向にトラッキングする」というところまでを説明します。AndroidのPreference系を簡単に扱いたい
##Preference系
SQLiteを使うまでもないデータを保存しておくにはPreferenceを使うのが一番です。しかしながら、一つのデータにアクセスするコードが微妙に長い。超せっかっち人間の僕にとっては悩みの種でした。
##簡単に扱えるようにした?
簡単?に扱えるようにクラスにしてみました。インスタンスはアプリで一つ。トップレベルで保持することとします。##コード
“`Kotlin
lass SettingsClass(_context: Context) {
private val context = _contextfun setBoolean(name: String, key: String, value: Boolean) {
val preference = context.getSharedPreferences(name, Context.MODE_PRIVATE)
preference.edit().putBoolean(key, value).apply()
}fun get
Androidをペンタブレットにする(2/3)
前回、[Androidをペンタブレットにする(1/3)]( https://qiita.com/poruruba/items/7a48fd52aa302bc48caa) を投稿しましたが、タッチパネルだけに飽き足らず、Androidスマホが持っているいろんな機能を取り込んでみました。
そのうち、以下の機能の実装を備忘録としておきます。スニペット的に残しておきましたので、コピペで使ってください。
• Androidの地磁気センサー、ジャイロスコープ、加速度センサーを検出して、Windowsに通知する。
• AndroidのGPS情報を取得し、Windowsに通知する。
• AndroidでQRコードをスキャンし、Windowsに通知する。
• Androidで音声認識して、Windowsに通知する。
• AndroidのクリップボードにWindowsからコピーやペーストする。# 地磁気センサー、ジャイロスコープ、加速度センサー
〇利用するクラス宣言
“`java
import android.hardware.Sensor;
import android.hardware.
MediaSessionを使って秒で音楽アプリを作成する(超簡易版)
##音楽アプリを作りたい
音楽アプリを作りたいんだけど、MediaSessionとかMediaBrowserServiceとかメンドクサイ。秒で音楽を再生できるようにしたい。という人向けの記事です。自分のメモ的な面もあるので、不備があればコメントお願いします。質問されればいつでも答える所存。##秒で基本的な機能を実装したい
###その1
MusicClassとMusicServiceという名でktファイルを作成。(マニフェストに登録とかはすっ飛ばします)###その2
以下MusicClassのソースコード。これをコピーして貼り付け。(自分のアプリからそのまま引っ張ってきているのでエラー多いかも。使わないなと思ったところは消して構わない。気にすることなかれ。)
“`Kotlin
class MusicClass(_context: Context) {private val context = _context
private var service: MediaBrowserServiceCompat? = nullprivate var
Delegated Properties で SharedPreferences を綺麗にしてみた
# はじめに
Delegated Properties を使って SharedPreferences を綺麗にしてみました。
(タイトルまんまですが..)SharedPreferencesを使うクラスで保存する値が増えるたびに類似したコードが量産されていたので、
リファクタリングのタイミングで導入してみての使い勝手とコードを残します。参考にしたサイトは以下です。
[公式](https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/delegated-properties.html)
[Kotlinアンチパターン slide 66~](https://www.slideshare.net/RecruitLifestyle/kotlin-87339759)
[KotlinのReadWritePropertyを使ってAndroidのPreferenceをナウく書く](https://medium.com/@yuzumone/kotlin-read-write-property-delegate-10feb8e3513
flutter run で起きたエラー(No supported devices connected.)
#はじめに
作成したアプリを実行するためにターミナルにて以下を実行したところ、
エラーが発生したので原因を解説します。“`
flutter run
“`#エラー内容
エラー内容としてはこちらになります。“`
A new version of Flutter is available!
To update to the latest version, run “flutter upgrade”.
No supported devices connected.
“`実際のターミナル画面では以下のように表示されています。
#エラーの原因
#### 1.結論
結論から申し上げますと、
**Flutterの最新バージョンにアップデー
Flutter環境構築 – 2(Xcode・iOSシミュレーターセットアップ編)
#はじめに
前回の「[Flutter SDKインストール編](https://qiita.com/naru_chan__/items/359fcdfb8aa092e9a44e)」に引き続き、
今回は「Xcode・iOSシミュレーターセットアップ編」です!
Flutter SDKのインストール・Flutterコマンドのセットアップがお済みでない方は、
先に「[Flutter SDKインストール編](https://qiita.com/naru_chan__/items/359fcdfb8aa092e9a44e)」をご覧ください。#「iOSシミュレーター実行編」でやること
本編では以下の項目を行います。– Xcodeのインストール
– iOSシミュレーターのセットアップ
– Flutterアプリを作成し実行するでは次項目より実際に作業していきます。
#Xcodeをインストールする
#### 1.App StoreよりXcodeをインストール
App StoreにてXcodeを検索し、インストールします。すでにインストールされている方はアップデートがないかを確認し、
最新バ
docker image「appium/appium」ではandroid webviewのテスト実行がエラーとなるので対処
#結論
1. docker(appium/appium)で立てたappium serverを通してwebviewの項目にswitchするとエラーになる
2. 対処するにはapium server内にchromedriverをインストールしておく必要がある#エラー:appium-serverにchromedriverをイントールしていない状態
“`python
# pytest -s test_main.py
================================================== test session starts ===================================================
platform linux — Python 3.6.9, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
rootdir: /root/project/appium-script
plugins: forked-1.1.3, xdist-1.31.0
collected 1 item
WebViewのvideoで表示されるあの画像(▶)を消す方法
WebViewの動画再生で見たことあるであろう「あの画像」を消す方法のメモ。
ちなみにこちらのことです↓
![▶.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/995/7f4b81d0-81d2-8b45-1235-1a371d9d236b.png)# `WebChromeClient` の `getDefaultVideoPoster` を指定すればOKだった
`WebChromeClient` の `getDefaultVideoPoster` で適当なBitmapを返すことで、実質消すことができるようでした。
“`
override fun getDefaultVideoPoster(): Bitmap? {
return Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
}
“`# Before/After
▶の画像が消え、チラつかなくなりました。
Before|After
:——————:
GitLab で Unity の Android アプリを自動ビルドするようにしてみた
# GitLab で Unity の Android アプリを自動ビルドするようにしてみた
GitLab で Unity の Androidアプリを自動ビルドするようにしてみました。
最初は、Windows10 で試行錯誤していましたが、GitLab Runner の実行ユーザーがシステムアカウントになるためか、エラーが解消されませんでした。
Mac で試したところ問題なく動いたので、Mac を使うほうがよさそうです。## 環境
– macOS Catalina 10.15.4
– GitLab CE 12.8.6(Windows10上の仮想サーバーで動かしています)
– GitLab Runner 12.9.0(Mac上で動かしています)
– Unity 2018.4.20f1## フォルダ構成
| ファイル/フォルダ | 内容 |
|:–|:–|
| TestProject_Unity/ | Unityプロジェクトフォルダ |
| TestProject_Unity/.gitignore | Git無視リストファイル |
| TestAutoTest/Te
【Flutter】BLoCパターンとは?
## BLoCパターンとは?
BLoCパターンは、Business Logic Componentの略
BLoC PatternはFlutterでのアプリケーション開発時に用いる、状態管理手法の1つです。
ビジネスロジックをコンポーネント単位で管理しやすくするためのパターンです。## BLoCのガイドライン
1. インプットとアウトプットは、単純なStreamとSinkに限定する。(Inputs and outputs are simple Streams/Sinks only.)
2. 依存性は、必ず注入可能でプラットフォームに依存しないものとする。(Dependencies must be injectable and platform agnostic.)
3. プラットフォームごとの条件分岐は、許可しない。(No platform branching allowed.)メモ的に参考資料をまとめておきます。
## 参考記事
– [長めだけどたぶんわかりやすいBLoCパターンの解説](https://qiita.com/kabochapo/items/8738223894
[Flutter] Dribbbleデザイン、そのまま作ろう その15
こんにちは 皆さん!Dreamwalkerです。
皆さんはFlutterを使って楽しんで開発進んでいますか?今回は15回目の私がDribbbleのサイトの中で、
気に入れたデザインをFlutterで作ってみた。。ということになります。Dribbbleというサイトは色んなデザイナーさん達が色んなデザインを載せていて
デザインをの知識というか、デザイナーじゃない人でも、開発に参考になったり、役に立ったりするサイトです。まあ、デザインに対して、色んなサイトありますけれど私はDribbbleを愛用してます。#:fire:今回のデザイン:fire:
今回は15番目の「DribbbleのデザインをFlutterでやってみた」になります。
## Flight Ticket右側の席を選ぶ画面を作ってみたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/52956ebe-e295-c343-e229-df0ff2a37e1f.png)
https://dr
DataBinding で ListViewを表示
# はじめに
DataBindingとListViewを使って簡単なリスト表示をやってみたときのメモ。# やったこと
## 1. DataBindingの有効化
Gradle(app)に設定を追記。“`gradle:app/build.gradle
android {
dataBinding {
enabled true
}
}
“`## 2. Modelの作成
ListViewに表示するデータを保持、整形するためのModelを作成。“`kotlin:model/Person.kt
class Person(
private val firstName: String,
private val lastName: String,
private val age: Int
) {
fun getFullName() = “$firstName $lastName”
fun getDisplayAge() = “$age 歳”
}
“`![Untitled Diagram (2).png](
AndroidのCIとテストアプリ配信をサービスアカウントを使ったGithubActions+AppDistributionに載せ替える
##載せ替えた理由
###CI
・BitriseにiOSとAndroidの両方を載せて回していたが、プロジェクト数も多くなり始め契約していたMAX2レーンのプランだとタイミングによって待つ必要が出てきていた。
・それぞれのプロジェクトで使っているBitriseのStepにばらつきが出ていたので、統一するタイミングが欲しかった。
・サーバーサイドがすでに一部載せ替えており、使いやすいし無料枠が余っていると言われていた。
・とりあえず新しい技術には触っておきたかった。###テストアプリ配信
・FabricのFirebase統合に伴い、Betaが利用できなくなる。
https://docs.fabric.io/apple/beta/overview.html##完成形
とりあえずGithubActions用のYAMLファイルを載せておきます“`yaml
name: CIon:
push:
branches:
– developjobs:
build:
runs-on: ubuntu-latest
steps:
–
ターミナルからAndroidエミュレーターを起動
## エミュレーターのリストを表示します。
“`
$ emulator -list-avds
“`Pixel_2_API_26
Pixel_3_API_26などと端末名が表示されます。
## エミュレーターを起動します。
emulator @Pixel_2_API_26エミュレーターが起動されました。
## 参考
https://developer.android.com/studio/run/emulator-commandline
lifecycle-livedata-ktx を使ってみた
`lifecycle-livedata-ktx` とは名前のとおりLiveDataのKTX拡張機能のことである。
具体的には、LiveData + Coroutine で組み合わせて非同期で値を取得して返す仕組みである。## 導入方法
app/build.gradleに以下を追加するだけ。
“`gradle
dependencies {
implementation “androidx.lifecycle:lifecycle-livedata-ktx:2.2.0”
}
“`公式にも載っている
https://developer.android.com/kotlin/ktx## 使い方
ViewModelクラスで、このように書くことができる。
“`kotlin
class MainViewModel : ViewModel() {// 変数宣言と共に、liveData関数内に非同期処理を実装できる
val data: LiveData= liveData {
// 結果を出力
emit
Androidをペンタブレットにする(1/3)
WindowsやMacは通常マウスとキーボードで操作しますが、Androidでは通常タッチパネルで操作します。
そこで、Androidのタッチパネル操作をWindowsから検知するようにして、Androidをペンタブレット化してみます。
実際には、AndroidをBLEペリフェラルにして、Windowsかはブラウザ経由でAndroidにつなぎます。これをやる目的は、毎度の通り勉強のためでして、以下のノウハウを得ることを目的にしています。
* Androidをペリフェラル化できるようになる。
* Androidのタッチイベントを操れるようになる。
* ブラウザからペリフェラルにアクセスできるようになる。この環境が整うと、ちょっとした機能をちょこちょこつけるモチベーションが上がってきます。ということで、ついでに以下のような機能をAndroidペンタブレットにつけます。
* Androidの地磁気センサー、ジャイロスコープ、加速度センサーを検出して、Windowsに通知する。
* AndroidのGPS情報を取得し、Windowsに通知する。
* AndroidでQRコードをスキ
GitLab Runner で Unity の Android SDK が見つからない場合の対処法
# GitLab Runner で Unity の Android SDK が見つからない場合の対処法
## 症状
GitLab Runner で Unity の Androidアプリのビルド時に、下記のエラーが発生。
“`
DisplayProgressbar: Detecting Android SDK
UnityException: Android SDK not found
Unable to locate Android SDK.
“`## 解決法
– システム環境変数に「ANDROID_SDK_ROOT」を追加。
– サービス「gitlab-runner」を再起動。## 説明
Unity 2018.4.20f1 の Preferences -> External Tools で Android SDK の設定はしているが、GitLab Runner でコマンドラインビルドを実行すると、上記のエラーが発生。
サービス「gitlab-runner」は別のアカウントで Windows 10 にログインしているため、レジストリに保存されている Android
Proxy有りでUnityのAndroidビルド
ユーザー名フォルダの直下にある **.gradle** フォルダの中に
**gradle.properties** という名前のファイルを作成
作成したファイルをエディタ等で開き、下記のように記述(Http・Https両方必要かは環境による気がする)
“`gradle.properties
systemProp.http.proxyHost=Proxy指定ホスト
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=ログインユーザーID
systemProp.http.proxyPassword=パスワードsystemProp.https.proxyHost=Proxy指定ホスト
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=ログインユーザーID
systemProp.https.proxyPassword=パスワード“`
■参考URL
https://answers.unity.com/questions/1621072/how
【Android】build.gradleからfastlaneでversionNameを取得する
# 概要
fastlaneでversionNameを使用したい時、build.gradleで管理しつつ、FastfileでもversionNameを使えるようにしたので議事録として記載# build.gradle側の記載
“`:app/build.gradle
apply plugin: ‘com.android.application’
・・・
def versionMajor = 1
def versionMinor = 2
def versionPatch = 3android {
・・・
defaultConfig {
・・・
versionName “${versionMajor}.${versionMinor}.${versionPatch}”
}
“`
それぞれバージョンを定義して、`defaultConfig`のversionNameで組み合わせる# Fastfile側の取得処理
“`:fastlane/Fastfile
platform :android dobefore_all do