- 1. 51歳からのプログラミング 備忘 Android非同期通信のコールバック AsyncTask終了後の処理
- 2. Androidでsystrace
- 3. 【Mac】UE4で作ったアプリをOculus Questへデプロイする
- 4. SUZURIのAPIを使ってAndroidアプリを個人開発した話
- 5. [備忘録][Android][Kotlin]画面を遷移する方法
- 6. [備忘録][Kotlin][OkHttp]解決方法:java.io.EOFException: \n not found: size=0 content= unexpected end
- 7. Could not complete execution for Gradle Test Executor 12.が出てテストが実行出来なかったときの対応
- 8. 【Android/Kotlin】n番目からm番目の文字を取得する方法
- 9. 【Android】this view is not constrained horizontally …
- 10. 【Android/Kotlin】textviewとedittextのsetTextに関するちがい
- 11. 【Android/Kotlin】constraintlayoutの位置設定について
- 12. Android 内部テスト方法(2020/01/27版)
- 13. Navigation Componentの基本的な使い方
- 14. Bluetooth PC-PC/Android-PC間通信(RFCOMM)
- 15. IntelliJ IDEA のAndroid プロジェクトの設定でハマったので備忘録
- 16. 51歳からのプログラミング ファイルに書き読み android 備忘
- 17. Android + Vulkan で Surface を初期化するメモ
- 18. DroidKaigi 2020アプリの「combine」が便利という話
- 19. Play Console デバイス一括除外スクリプト
- 20. 関数型プログラミングのFunctorって何が嬉しいの?
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
[備忘録][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が表示されるので、テスターを登録してからテスターに対してメールを送り、リンクを開いてもらえればアプリが使えるようになります。
ブラウザに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
IntelliJ IDEA のAndroid プロジェクトの設定でハマったので備忘録
## 環境
Mac OSX 10.14.6 Mojave
IntelliJ IDEA ULTIMATE 201903
マルチモジュールでのプロジェクト### 問題1 Network ErrorでActivateされない
IntelliJをUpdateしようが、Activateさせようがいきなりネットワークエラーでつながらなくなる現象が起きた### 対応
Macを再起動する
私はなぜか2回再起動することでこの現象を解決することができました。
なので一発で解決できるかは不明です。### 問題2 `ClassNotFoundException: JAXBException` でcompileエラー
java9以降をsdkとして設定しているとJava9からJAXBExceptionが消えているので
compileエラーが発生する.### 対応
1.ProjectTabに切り替え → Project rootを右クリック → Open Module Setting → Project Structure → dependenciesタブに切り替え → Module SDKをJ
51歳からのプログラミング ファイルに書き読み android 備忘
“`java:
public class MainActivity extends AppCompatActivity {@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);TextView tv = findViewById(R.id.tv);
String text = “”;try {
FileOutputStream output = openFileOutput(“userInfo.txt”, Context.MODE_PRIVATE);
output.write(“hello”.getBytes());
output.close();
} catch (Ex
Android + Vulkan で Surface を初期化するメモ
## 背景
* Vulkan の描画画面を初期化したい.
## C++ メインのアプリで使う
Surface を作るには, ANativeWindow コンテキストが必要になります.
C++ メイン(android_main を利用)の場合, android_native_app_glue を使います(NDK にソースコード付属)
android_main から渡ってくる `android_app` struct に `ANativeWindow` の情報として window があります.
こちらを Vulkan の Surface 初期化のときに渡します.Sascha 先生のサンプルを参考にします.
https://github.com/SaschaWillems/Vulkan-glTF-PBR
## 通常の Java, Kotlin から使う
Android VulkanでCamera画像を表示する。
https://qiita.com/kwhrstr1206/items/44fb2b6f89126cf78437を参考にします.
## Flutter で
DroidKaigi 2020アプリの「combine」が便利という話
# はじめに
2020/1/14に[DroidKaigi 2020のアプリ](https://github.com/DroidKaigi/conference-app-2020)がGitHubに公開されました。今も盛んに有志によるContributeが行われています。DroidKaigiのアプリは毎年、その時点でほぼ最新と言える技術を使った実装がふんだんに盛り込まれており、ソースを覗くだけでもとても参考になります。
その中で、個人的に興味を惹かれた処理を紹介します。
*注意:DroidKaigiアプリは現在も絶賛アップデート中のため、今後実装が変更になる可能性もあります。*
# 実装紹介
紹介するのは「combine」という関数です。
元ソースは [conference-app-2020/corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2020/ext/LiveDatas.kt](https://github.com/DroidKaigi/conference-app-202
Play Console デバイス一括除外スクリプト
Androidアプリ開発において、公開対象のデバイスを制限したい場合があります。
今までは[このページ](https://qiita.com/kookaa/items/1c4e2d674b67fb911250)のスクリプトで一括で行えていたのですが、最近アクセスすると方法が変わっていたのでスクリプトを記載します。(2020/01/27)関数型プログラミング言語を勉強していると、Monadだけでなく、FunctorとかApplicativeなど、オブジェクト指向に慣れ親しんだプログラマには聞きなれない言葉が出てきます。
今回は自分の勉強も兼ねて、Functorの使い所の代表的なパターンを見てみます。
※筆者は圏論の専門家ではないので、あくまでアプリケーションを作るプログラマ視点で、Functorの概要を整理しています。
## Functorのおさらい
Functorのおさらいをするにあたり、Haskellを説明に使用します。
HaskellでのFunctorのソースコードを抜粋します。
以下、[https://hackage.haskell.org/package/base-4.12.0.0/docs/src/GHC.Base.html#Functor](https://hackage.haskell.org/package/base-4.12.0.0/docs/src/GHC.Base.html#Functor)より抜粋。>
“`haskell
class Functor f where
fmap