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

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

Androidアプリがいきなりビルド出来なくなった時

# 何も変えていないのにビルド出来ない…
本記事では、僕がAndroidアプリのコードを何も変えていないのに突如ビルド出来なくなった時の話をします。
これはAndroidのパッケージマネージング事情によるところが多いっぽいので、それを主に解説します。
最初からビルドできてない場合は対象外です。

# 依存関係を疑う
最初に疑うべきは、ライブラリのバージョン指定。
以下のような記述をbuild.gradle内に見付けたら、真っ先に疑う。

“`javascript:android/build.gradle
compile ‘com.google.android.gms:play-services-gcm:+’
“`

まずいのは末尾の`:+`の部分。+は「その中で一番新しい」を表し、つまり`:+`は「最新版」という意味。
ライブラリのインストールはアプリをビルドするたびに行われるので、コードを変えていなくてもインストールされるライブラリはバージョンアップに従って変わっていく。

「何も変えてないのにビルドできないよ〜」はまずこれが原因。(経験数2)

# Androidサポー

元記事を表示

強制バージョンアップ覚書

# はじめに
アプリの機能でよく実装する強制バージョンアップですが、
毎回実装すると、地味に不具合が出ることに気がつきました…
(ロジックとしては定型的なんですが、意外とロジックミスをしやすい…この記事を書いていてもいくつか…)

使える場面は限定的ですが、強制バージョンアップのロジックを整理して残しておきます。
**※こちらは参考のみとして、業務ではコピペで使わないようお願いいたします。**

[ソースコードはこちらです](https://github.com/shinya-takano/ForceVersionUpSample)

# 覚書とテストコード
– バージョンルールは決めておく

[Android公式サイト](https://developer.android.com/studio/publish/versioning?hl=ja) では以下のように記載があります。

> versionName – ユーザーに表示されるバージョン番号として使用される文字列。この値は、未加工の文字列または文字列リソースへの参照として設定できます。
この値は文字列であり、アプリの

元記事を表示

Androidで登録バリデーションフォームをサクッと作る

Androidの今風のスタックでバリデーションをどう作るのかサクッと実装してみた

よくあるEメールとパスワードを入力するものを想定しています
スクリーンショット 2020-01-28 22.34.37.png

今回はEメールとパスワードを打ち込み、条件を満たせばREGISTERボタンが活性化するような仕組みとします

# 環境
* Kotlin
* AndroidX
* Databinding(2way)
* MVVM
* Gradle

一部抜粋

“`build.gradle
// LifeCycle
def lifecycle_version = “2.1.0”
implementation “androidx.lifecycle:lifecycle-extensions:$lifecycle_vers

元記事を表示

FlutterをAndroidStudio(Windows)にインストールしてデモアプリを実行するまでやってみた

##はじめに
FlutterをWindowsにインストールしたのでメモとして残したいと思います。
何番煎じの記事かわかりませんが、version違いとかで少しずつ違ってたりするので誰かのお役に立てれば幸いです。

##環境
Windows 10
Android Studio 3.5
Flutter Windows 1.12.13

##やってみる
基本的にはGoogleの[公式ドキュメント](https://flutter.dev/docs/get-started/install/windows)に沿ってやっていきます。

###まずはSDKをダウンロード
公式ドキュメントからSDKをダウンロード
![flutter_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137041/1573e0d5-7ade-850a-3b9f-131a125e6d2a.png)
zipを解凍し、適当な場所に配置します。
`C:\Program Files\`には置くなって書いてあるので、`C:\`の下に適当なフォルダを

元記事を表示

Android C/C++ でアクセスできるストレージのメモ

## 背景

主に開発時に, Android + C/C++ で fopen, std::ifstream などで実機上のファイルの読み書きをしたい.

SDK level 28 でコンパイルし, Android 10(Pixel4) で確認しています.

## `/sdcard`, `/storage/emulated/0`

Android M から, `/sdcard` へは Toast などでユーザから同意取得(or Android 設定で対応)になりました.
Permission を取得していればアクセスできます.

https://stackoverflow.com/questions/33162152/storage-permission-error-in-marshmallow

JAVA でいくらかコード記述を書く必要があります.

開発時であれば, adb で設定することもできます.

https://github.com/TilesOrganization/support/wiki/How-to-use-ADB-to-grant-permissions
https

元記事を表示

[Android] AlertDialogにListViewを表示する(未完)

##前提
ListViewの使い方がわからない方はこちらを参考にしていただきたい。
https://qiita.com/QiitaD/items/6123bb53d358c51beb97

##参考URL
こちらを参考にした。この方の記事で紹介されているサンプルではうまくいった。
https://qiita.com/ueno-yuhei/items/ef6d835e143592e7a3f0

##使い方(未完)
まずListViewを作り、それを以下のようにしてAlertDialogにセットした。

~~~java
//ListView作成
listView.setAdapter(adapter);

//AlertDialogにセット
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle(“タイトル”)
.setView(listView)
.setPosit

元記事を表示

51歳からのプログラミング 備忘 Android非同期通信のコールバック AsyncTask終了後の処理

# 非同期通信のコールバック

AsyncTaskの処理が終了した後で、何かしたいときに使います。

“`java:MainActivity
public class MainActivity extends AppCompatActivity{

TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);

AsyncCallBack asyncCallBack = new AsyncCallBack();
MyAsyncTask myAsyncTask = new MyAsyncTask(asyncCallBack);
myAsyncTask.execute();

元記事を表示

Androidでsystrace

Androidのsystrace取るのに少しハマったのでメモします。

###### 実行手順
手順は[Android developers](https://developer.android.com/studio/profile/systrace/command-line?hl=ja)に記載されている通りなのですが、pythonは2.7系でないとダメでした。
参考:[Windowsにpythonをインストール](http://yoshihiro-kato.blogspot.com/2017/06/windowspython.html?m=1)

###### 不足パッケージの追加
また、pywin32をインストールしないと下記のエラーとなります。
`ImportError: No module named win32con `

pywin32は下記のコマンドでインストールできます。
`pip install pywin32`

pipはインストールしたpythonのScriptsフォルダ内にあり、pathを通していればそのまま使えます。
ただし、proxy環境では、オプションでp

元記事を表示

【Mac】UE4で開発したアプリをOculus Questへデプロイする

# はじめに

macOSでUE4を使ってOculus Questアプリを制作し、実機で動かすまでの方法が記載された記事があまり見当たらなかったので、今回書こうと思った次第です。

今回は、UE4で新規プロジェクト(プロジェクトのカテゴリ:ゲーム)立ち上げからOculus Questへデプロイまでを順を追って説明していきたいと思います。

文字だけで説明していますが、お許し下さい。(すみません)

# 当記事で取り扱わない事

– UE4のインストール
– ADBのインストール(Macには既に入っている為)
– Oculus Questのセットアップ(前提:開発者モードがONになっている事)
– Javaのインストール

# 開発に必要なもの

– Oculus Quest本体
– コントローラー
– 本体付属の充電ケーブル

付属の充電ケーブルはType-Cですが、規格がUSB2.0の為、USB3.x系規格のものを別途購入することをおすすめします。
**付属の充電ケーブルでも開発可能です。(この事は他の記事では記されていない)**

Oculus Linkがありますが、コスパ

元記事を表示

SUZURIのAPIを使ってAndroidアプリを個人開発した話

タイトル通り、SUZURIさんのAPIを使って、Androidアプリを作成しました。
1ヶ月半ほどの開発期間でしたが、せっかく色々考えながら作ったので覚えてるうちにここに書いておきます。

開発したアプリ
SUZROID
https://play.google.com/store/apps/details?id=jp.co.seto.suzroid
ic_app.png ic_app.png

元記事を表示

[備忘録][Android][Kotlin]画面を遷移する方法

# 参考
[備忘録][Android][Kotlin]画面を遷移する方法

元記事を表示

[備忘録][Kotlin][OkHttp]解決方法:java.io.EOFException: \n not found: size=0 content= unexpected end

# 参考
[備忘録][Kotlin][OkHttp]解決方法:java.io.EOFException: n not found: size=0 content= unexpected end

元記事を表示

Could not complete execution for Gradle Test Executor 12.が出てテストが実行出来なかったときの対応

マルチモジュールでJUnit5のテストを実行した時に以下の例外で動かなかった時に

“`
Caused by: org.junit.platform.commons.util.PreconditionViolationException: Cannot create Launcher without at least one TestEngine; consider adding an engine implementation JAR to the classpath
“`

この辺の設定とかしてあるのに出たら

“`
testOptions {
junitPlatform {
filters {
engines {
include ‘spek2’
}
}
}
}
“`

pluginの指定が漏れてた。

“`
apply plugin: “de.mannodermaus.an

元記事を表示

【Android/Kotlin】n番目からm番目の文字を取得する方法

“`hoge.kotlin
var fuga = “20190127”
var length = fuga.length
var text = fuga.substring(length-2,length)//6から8まで抽出
→27
var text2 = fuga.substring(4,8)//4から8まで抽出
→0127
“`

元記事を表示

【Android】this view is not constrained horizontally …

– constraintlayoutを使用した時にたまに見るエラーメッセージ
– 「水平制約、垂直制約をつけてください」という意味
– 下記を追加してあげればOK

“`hoge.xml
app:layout_constraintLeft_toLeftOf=”parent”
app:layout_constraintRight_toRightOf=”parent”
app:layout_constraintTop_toTopOf=”parent”
“`

元記事を表示

【Android/Kotlin】textviewとedittextのsetTextに関するちがい

“`kotlin
//editText
hoge.setText(“apple”)

//TextView
fuga.text=”banana”
“`

元記事を表示

【Android/Kotlin】constraintlayoutの位置設定について

■:top_top=button

■:基準(id=button)

■:top_bottom=button

元記事を表示

Android 内部テスト方法(2020/01/27版)

Androidで内部テストを行う際の注意点です。
基本的には[ここの公式サイト](https://support.google.com/googleplay/android-developer/answer/3131213)を見ながら行えば良いのですが、招待リンクは自分で送る必要があります。

公開して暫くすると下図のオプトインURLが表示されるので、テスターを登録してからテスターに対してメールを送り、リンクを開いてもらえればアプリが使えるようになります。

スクリーンショット 2020-01-27 17.17.18.png

ブラウザにURLを直打ちしてもエラー画面が出てきますので、URLを開くのではなくクリックするようにしましょう。

元記事を表示

Navigation Componentの基本的な使い方

# 得られる知識

– 画面間での遷移方法
– データの受け渡し方法

# Navigation Componentとは
画面間の遷移の実装を楽にしてくれるGoogleが開発しているライブラリです。

# 環境
Android Studio4.0 Canary2

# 準備
## Navigation Componentを導入する
“`build.gradle
dependencies {
// 追加するものたち
def nav_version = “2.1.0”

implementation “androidx.navigation:navigation-fragment-ktx:$nav_version”
implementation “androidx.navigation:navigation-ui-ktx:$nav_version”
}
“`

# ナビゲーショングラフを作成する
ナビゲーショングラフとは、すべてのデスティネーション(ユーザがアプリ内で移動できる画面)とアクション(どの画面からどの画面に移動するか)を格納するリソースファ

元記事を表示

Bluetooth PC-PC/Android-PC間通信(RFCOMM)

BluetoothのプロトコルRFCOMM([RFCOMM ‐ 通信用語の基礎知識](https://www.wdic.org/w/WDIC/RFCOMM))での通信を試した。

– クライアント-サーバ
– PC-PC
– Android-PC

## PC-PC間 通信
– サーバ
– Ubuntu 18.04
– Python 3.7.4
– クライアント
– Windows 10
– Python 3.6.8

### 導入(Ubuntu)
“`shell
sudo apt install libbluetooth-dev
pip3 install pybluez
“`

### 導入(Windows)
“`
# ref: https://github.com/pybluez/pybluez/issues/279
pip3 install PyBluez-win10
“`

### ペアリング
ペアリングはOSのUIを使って手動で行った。

Ubuntu:Settings>Bluetooth
Windows:設定>デバイス>Bluetoo

元記事を表示

OTHERカテゴリの最新記事