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

Android関連のことを調べてみた2020年05月29日
目次

THETAプラグインでTensorFlow Liteのセグメンテーションをかける

#はじめに
リコーの[Yuuki_S](https://qiita.com/Yuuki_S)です。
弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VやTHETA Z1は、OSにAndroidを採用しており、Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます。(詳細は本記事の末尾を参照)。
***
上述の通りTHETAは、カメラでありながらAndroid端末でもあるため、単体で撮影し機械学習の処理をかけて出力することが可能です。

以前、@KA-2さんが[THETAプラグインで連続フレームにTensorFlow Liteの物体認識をかける](https://qiita.com/KA-2/items/8c150975a998b0ad0f16)記事を掲載しましたが、
今回はセマンティックセグメンテーションを実施する方法を記載しようと思います。

本記事を参考にすることで、セグメンテーション結果をライブプレビュ

元記事を表示

楽天モバイルで自社回線かパートナー(KDDI)回線のどちらに接続しているか判定する

# 前置き
筆者はデジモノガジェットが好きなので、楽天モバイルのRakuten UN-LIMITを契約しています。
ご存知の方も多いと思いますが、楽天モバイルは後発のキャリアですので自社の回線のエリアが狭く、パートナー(KDDI)回線でエリアを補強しています。
自社回線は容量無制限でパートナー(KDDI)回線は5GBという制限があるので、リアルタイムでどちらの回線に接続しているか把握できれば便利だと思い調査しました。

# 構成
| 名前 | バージョン |
| ————- | —————- |
| macOS | Catalina 10.15.4 |
| AndroidStudio | 3.6.3 |
| Kotlin | 1.3.72 |
| AVD(API) | 使用しません |
| 実機 | SH-RM11 |

# 判定ロジック
世間では電波の周波数(バンド)を取得して判断していることが多いと思います。

|

元記事を表示

【Flutter】Flutter製アプリをリリースしてみた、あとARとかも使ってみた話

## アプリ概要

ゴルフの[オリンピックゲーム](https://www.clunk.jp/golf-olympic-rules#1)の計算やボールとピンまでの距離のAR測定,1−18までの乱数を生成することができる、ゴルフ幹事向けのアプリです。

[App Store はこちら](https://apps.apple.com/jp/app/engolf/id1507668448?l=en)
[Google Play Store はこちら](https://play.google.com/store/apps/details?id=com.tetsukick.engolf)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/67933117-6fcb-fd17-a67e-2c6f9c547368.png)

ローカライズファイルをAndroidとiOSで共通管理する

## はじめに
AndroidとiOSでサービスを展開している場合、同じ文言を使っている。
プラットフォームごとに管理することで文言の誤字が発生しやすく、コストも上がる。
ローカライズファイルを効率よく管理する方法を考えました

## 前提条件
– AndroidとiOSで共通のリソースを扱う
– 差分を追いやすいこと

## githubを使って管理
– オリジナルデータとなる文言とkeyはjsonにして管理
– githubを使うことで差分を追いやすくなる
– CIを使うことで自動化できる

## ローカライズファイルを更新するツール
– JSONからローカライズファイルを生成するのを簡単にするためにツールを作成した
– [t-osawa-009/JSONToString](https://github.com/t-osawa-009/JSONToString)

### 使い方
1.オリジナルデータとなるJSONファイルを追加

“`json
[
{
“key”: “hoge”,
“key_android”: “hoge”,
“key

元記事を表示

Androidアプリが非SDKインターフェースを使用していないか調べる方法

分かりやすい方法としては、対象のOSをエミュレーターで起動しアプリのすべての操作を実施して以下のようなログが表示されていないか確認する方法がある。
この方法であれば発生箇所がある程度予測できるし、非SDKを使用してはならないなどの要件にも対応しやすい。

“`
Accessing hidden field Landroid/os/Message;->flags:I (light greylist, JNI)
“`

参考
https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces#test-for-non-sdk

元記事を表示

AndroidStudioで可変リスト表示を作る(前編)

#AndroidStudioで可変リスト表示を作る(前編)
リスト表示を作ってみましょう

|Android|アンドロイド|
|:—|:—|
|Java|ジャバ|
|Kotlin|コトリン|

こういうリスト表示を作ってみます。
表示が固定ではなくボタンを押すと追加されるように作ります。

画面表示に使用する文字列を登録してしまいます。

“`strings.xml


QiitaHelloSample
追加
削除
追加する値

“`

ListViewと追加ボタン、削除ボタンを並べたいのでレイアウトを工夫します。
activity_main.xmlに元からあるTextView

元記事を表示

【Kotlin】AndroidxのPreferenceFragmentCompatを使ってみる

##はじめに
今回も例によって初学者向けの内容になっているかと思います。私自身が初学者である為、理解の浅い所や間違いなどあるかも知れません。都度ご指摘頂けると嬉しいです。

さて、Androidには昔からアプリの設定画面を簡単に作る仕組みがあります。ググれば記事は沢山見つかるのですが情報が古くなっているものも多かったので、Androidxライブラリでの実装をKotlinで書いてみようと思います。
##準備
Androidxライブラリを使うため、build.gradle(appのほう)のdependencies内に記述が必要です。

“`kotlin:build.gradle(Module.app)
dependencies{

implementation ‘androidx.preference:preference:1.1.1’//これを追加
}
“`

##構成
先に必要なファイルを挙げておきます。
-SettingActivity.kt
-activity_setting.xml
-SettingFragment.kt
-preference.xml

##

元記事を表示

Android Emulatorで撮影したスクリーンショットの保存先変更

#はじめに
Android Studio付属のエミュレータでスクリーンショットをたくさん撮る必要があったときに、
いちいちデスクトップに保存されてしまうのをなんとかしたい!と思い調べたことの備忘録です。
#環境
Android Studio 3.6(RC1)
Android Emulator 27.3.10
#方法
エミュレーター画面の横に表示されるパネルの最下部にある[詳細]ボタンを押すと表示されるメニューから、
[Screenshot save location]の項目で変更できます。
![C855A9C6-0034-43B8-8B12-670C268F1F8E.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631351/e05279c5-debe-0cb3-4cab-cc8950ab582f.png)

元記事を表示

Roomでデータベースに値を保存

# はじめに
[前回](https://qiita.com/karass/items/4f2e33446eb0253859ef)は、入力した値をリスト表示するところまで行いましいた。今回は、そのデータをデータベースに保存するようにします。

# 目標
Roomを追加するだけなので、今回はレイアウトの変更はありません。
アプリを閉じて、再起動したときにデータが保持されてるかを確認してください。

# 環境
– Android Studio 3.6.3
– Kotlin 1.3.72

# 作成手順
## Gradle

“`build.gradle
apply plugin: ‘kotlin-kapt’

dependencies {

implementation “androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0”

def room_version = “2.2.5”
implementation “androidx.room:room-runtime:$room_version”

元記事を表示

[Android]アクションバーの色を動的に変える

## アクションバーの色を変更する
“`MainActivity.kt
supportActionBar?.setBackgroundDrawable(ColorDrawable(Color.parseColor(“カラーコード”)))
“`

## ステータスバーの色を変更する
“`MainActivity.kt
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.statusBarColor = Color.parseColor(“カラーコード”)
“`

アプリをAPIバージョンの22以下に対応させる場合、ステータスバーの文字色が白色に固定されているため、ステータスバーの色が白系統の場合**文字の可読性**を損なわないか考慮する必要があります.

## ツールバーの色を変更する
“`MainActivity.kt
toolbar.setBackgroundColor(Color.parseColor(“カラーコード”))
“`

元記事を表示

AndroidStudioのKotlinでGsonを使う

#KotlinでGsonを使う
##Gsonを使う準備
Gsonは様々なメーカーから様々な機能を持ったGSonライブラリが提供されている。
便利なのを使うべきなのだろうけど最初から入っているGoogle社のGsonをここでは使用する。
※どうせカプセル化してしまえばあまり関係ないし

プロジェクトツリーのbuild.gradle(app)を開いて dependencies { の中に

“`build.gradle(app)
implementation ‘com.google.code.gson:gson:2.8.6’
“`

を追加して更新するとGsonが使えるようになります。

##値を管理するクラスを作る
Kotlinで値を管理するためのクラスを作ります。

“`sample.kt
open class gsonData(){
var dStr : String = “test”
var dInt : Int = 1234
var dDouble : Double = 5.6
}
“`

作ったクラスは

“`MainActivity.

元記事を表示

WSlで,Vue.jsによるアンドロイドアプリ開発環境を構築しようとしたときにハマった

備忘録

[【Vue.js】WSL 上で Vue.js を用いた Android アプリを開発する](https://github.com/NativeScript/nativescript-cli/issues/5304)
こちらを用いて,よっしゃ開発環境作るどーーと意気込んでいたら…

“`bash

sudo $ANDROID_HOME/tools/bin/sdkmanager “tools” “emulator” “platform-tools” “platforms;android-28” “build-tools;28.0.3” “extras;android;m2repository” “extras;google;m2repository”

Error: Could not find or load main class com.android.sdklib.tool.sdkmanager.SdkManagerCli
“`

とのエラーが出た.調べていると,JDKが8よりも新しいものを使うとうまくいかないとのこと.この段階で最新版のjava14を入れていた

元記事を表示

AndroidStudioで画面に表示する文字を登録する

#AndroidStudioで画面表示に使用する文字を登録
新規アプリケーションの作成で空のアクティビティを選んでから
activity_main.xmlにボタンを追加します。

“`activity_main.xml

元記事を表示

カウンターアプリ1号

とりあえず、自分の中でまとまった内容から追記していきます。
#Javaファイル

“`Java:MainActivity.java
package com.example.counterapp1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity
implements View.OnClickListener{
int number;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreat

元記事を表示

Flutterでサポートされていない言語の場合に、Android端末で表示される言語

Flutterで多言語化している最中に、`supportedLocales` にリストされていない言語のときに、表示される言語が意図したとおりに動かず少しハマりました。

例として以下の言語設定の場合に、 端末の言語設定がドイツ語の場合 `en` が使用されると思っていました。

“`dart

supportedLocales: [
const Locale(‘en’),
const Locale(‘zh’),
const Locale(‘ja’),
],

“`

理由は[公式ドキュメント](https://flutter.dev/docs/development/accessibility-and-localization/internationalization)の 以下の文章。
> If an exact match for the device locale isn’t found, then the first supported locale with a matching languageCode is used. If that fails, the

元記事を表示

プルリク前後の apk ファイルを比較する GitHub Actions

下記のような yaml ファイルと [Danger](https://github.com/danger/danger) 用の設定ファイルを、リポジトリの `.github/workflows` 配下に置きます。

“`yaml:.github/workflows/apk-info.yml
name: apk info

on: pull_request

env:
GRADLE_BUILD_TASK: ‘assembleDebug’

jobs:
build-head:
name: Build head
runs-on: ubuntu-18.04
steps:
– name: Check out
uses: actions/checkout@v2
with:
ref: ${{ github.event.head.sha }}
– name: Set up JDK
uses: actions/setup-java@v1
with:

元記事を表示

AndroidStudioでのデバッグログを使ったデバッグ

#AndroidStudioでのデバッグ方法
ソフト開発をしていても予期しない動作(思い通りに処理されない)になったとき、実機やエミュレータでの表示で確認するには限界があります。

##ソース上での工夫
分岐の結果どっちに処理が進んだのかがわからない場合は、その気になる行にてデバッグ出力を行います。

**Log.d(“Sample”,”root 1″)**
このように記述します。

##デバッグログ
デバッグ画面の下、コンパイル状況などが表示されるログの下にタブがあるのでLogcatをクリックします。
初期状態だとアプリを実行する度に色々な情報が来て追えなくなりますが、ログ画面の上の方に「Verbose」と表示されるところを「Debug」に変更し、さらにその右に「Sample」と入力すれば上記のデバッグ出力を確認する事が出来ます。
コンパイルエラーが出るとそっちのログ画面に移りますので注意です。

**Log.d(“Sample”,”root 1″)**
ログとして i つまり Debugとして出力します。エラーの場合はErrorなど最適な出力もあります。
「Sample」はログを捕

元記事を表示

OTHERカテゴリの最新記事