- 1. 自作アプリで、Intentを使用してGmailアプリに、CC, BCC, 件名, 本文が渡せない。
- 2. 初心者の初心者による初心者のためのAndroidアプリ開発
- 3. Android 10で、端末からIMEIなどのSIM情報を取得する方法
- 4. Androidで特定部分だけ角丸にする
- 5. [Android] コールバック
- 6. libGDXでandroidアプリのチューニングをした話
- 7. Androidアプリでソフトウェアキーボードの入力を1文字ずつ検出する
- 8. [Unity][Fee]各プラットフォームでファイル選択ダイアログを表示する
- 9. Android StudioでJavaのversionで躓いたのでまとめる
- 10. Wifi経由でadbコマンドを実行しよう(2.Linux編)
- 11. [備忘録][Android Studio]fontFamilyで独自フォントを選択できるようにする
- 12. [備忘録]Kotlinでシングルトンクラスの作成方法
- 13. [kotlin] RecyclerViewの実装、クリックイベント付き
- 14. [Android]端末からサーバへ画像のアップロード
- 15. [Android]Navigation でどこまで戻るか制御する (Pop To と Inclusive)
- 16. libtorch を Android でビルドするメモ
- 17. 【和訳】Refactoring to Kotlin(Codelabs for the 2019 Android Dev Summit: Mountain View, October 23-24, 2019.)
- 18. 桁区切り付きで数値を表示するExtension
- 19. [Android] ProgressBarの使い方
- 20. Retrofit2で共通エラー処理。ついでにローディングの判定
自作アプリで、Intentを使用してGmailアプリに、CC, BCC, 件名, 本文が渡せない。
#問題
私の自作アプリでは、Intentという内部処理を使用して、Gmailアプリに、CC, BCC, 件名, 本文を渡しています。ある日突然、Gmailアプリが、CC, BCC, 件名, 本文を受け付けてくれなくなりました。#問題発生時のコード(Kotlin)
“`
// メールアドレス設定
val uri = Uri.parse(“mailto:” + mailAddressTO)// 件名、本文をメールツールに渡す
val intent = Intent(Intent.ACTION_SENDTO, uri)
intent.putExtra(Intent.EXTRA_CC, mailAddressCC)
intent.putExtra(Intent.EXTRA_BCC, mailAddressBCC)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, mailText)
startActivity(context, intent, null)
“`
#解決策
初心者の初心者による初心者のためのAndroidアプリ開発
# はじめに
こんにちは。
現在、高専の4年生をしており、最近Androidアプリ開発について勉強しています。きっかけとしては単純なもので、自身の研究内容にAndroidアプリの開発の知識が必要だったというだけです。プログラミング自体に興味を持ってからの日々が浅いので、正直見るもの見るもの新鮮です。この記事を見られているということは、タイトルにも書かれているようにAndroidアプリ開発の初心者、もしくは、これから学んでいくという方がほとんどだと思います。そのため、『これからAndroidアプリ開発について学んでいきたいと思ったけどプログラミング全然知らないけど大丈夫かな?』って方をメインに、つまずきやすいと感じた部分を初心者なりに精一杯わかりやすく解説して学んでいけたらと思っています。
#イベントとイベントハンドラ、リスナ
今回はイベントとイベントハンドラとリスナについて解説していきます。正直、イベントとリスナはまだしも、イベントハンドラなんていう単語聞いたことないと思います。もちろん私も聞いたことなかったです。意味自体は非常に簡単で一度聞いてしまえば難しく考える必要なもの
Android 10で、端末からIMEIなどのSIM情報を取得する方法
# はじめに
[Privacy changes in Android 10 | Android デベロッパー | Android Developers](https://developer.android.com/about/versions/10/privacy/changes?hl=ja#non-resettable-device-ids)
>Android 10 以降で IMEI とシリアル番号の両方を含む再設定不可能なデバイス ID にアクセスするには、アプリに READ_PRIVILEGED_PHONE_STATE 特権が必要です。
注意: Google Play ストアからインストールされたサードパーティ製アプリでは特権を宣言できません。Android 10から、端末からIMEIなどのSIM情報を取得するためには、「READ_PRIVILEGED_PHONE_STATE」という権限をAndroidManifest.xmlに追加する必要が出てきました。
“`xml:AndroidManifest.xml
Androidで特定部分だけ角丸にする
`shape`の`corner`に`topLeftRadius`みたいなパラメータがあるので、角丸にしたい部分だけ指定してあげれば角丸になる。以下は上だけ角丸にした場合。
“`xml
“`全体角丸は`radius`で指定したほうがわかりやすい
“`xml
[Android] コールバック ##作るもの
以下をコールバックを使って実装する。
・ボタンを押すと非同期処理を実行する
・非同期処理が終わったら画面に「終了」を表示する
![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/6a9eae7a-1976-cae3-0d91-8742d2635edd.png)##用意するクラス
・AsyncTaskCallback.java コールバックインターフェース
・MainActivity.java コールバックインターフェースを実装する
・HttpAsync.java 非同期処理クラス##使い方
AsyncTaskCallback.java~~~java
public interface AsyncTaskCallbacks {
public void onTaskFinished(); //終了
public void onTaskCancelled(); //キャンセル
}
~~~Main
libGDXでandroidアプリのチューニングをした話
##はじめに
もう9年前。iOSアプリが日本ランキングの1位になった。
[iOSソリティアV](http://itunes.apple.com/jp/app/soritiav/id341532096?mt=8)
さりげなく自慢:relaxed:調子に乗ってandroidアプリも作った。nativeで作った。
nativeで当時android2.xなので、SurfaceViewを使った。
[androidソリティアV](https://play.google.com/store/apps/details?id=jp.co.projapan.solitaire)アニメがいまいちだったけど:sob:、ちゃんとできた。
フレームレートがちょっと低かった。android/iOS共に現在10周年記念中。
数年前、チューニングしたいな、と思った。
iOSとソース一本化
したいけど、一本化するにはやることが多すぎる・・・。うーん、GLSerfaceViewとかか。めんどくさそうだぞ。しかもよくなるか保証がない。
そんなとき、こんな記事が
[Android StudioでlibGDX
Androidアプリでソフトウェアキーボードの入力を1文字ずつ検出する
# 概要
Androidで1文字ずつ文字の検出をしようと思ってonKey~をつかってもできませんでした.
ちょっと調べたところ,ソフトウェアキーボードのキーボードイベントを拾ってくれないらしいです.
https://developer.android.com/training/keyboard-input/commandsので,1文字ずつ文字の検出する機能を実装しました.
EditTextの場合,TextChangedListenerを使えば一応できますが,入力ではなくてEditTextのテキストが変わったら反応するため処理がめんどくさいので使いません.
## ソースコード
https://github.com/yokoro13/Get-Software-KeyBoard-Input# 実装
今回はEditTextの場合で実装していきます.
この実装方法だと(たぶん)ほかのViewでもつかえます.WebViewでは使えました.やることは簡単で,もとになるViewを継承して`onCreateInputConnection`と`dispatchKeyEvent`をオーバーラ
[Unity][Fee]各プラットフォームでファイル選択ダイアログを表示する
# はじめに
自作ライブラリ開発日記です。
https://github.com/bluebackblue/fee_coreunitypackage
https://github.com/bluebackblue/fee_core/releases# なにが問題なのか
ファイル選択ダイアログはプラットフォームによって対応方法が違う。
キャンセルが取れないプラットフォームがある。
Androidは「AndroidManifest.xml」を設置する必要がある。# コード
“`cs
/** 開く。
*/
public void Open()
{
Fee.Platform.Platform.GetInstance().OpenFileDialog();
}/** Main
*/
public void Main()
{
string t_full_path = Fee.Platform.Platform.GetInstance().GetOpenFileDialogResult();
if(t_full_path != null){
UnityEngine.Deb
Android StudioでJavaのversionで躓いたのでまとめる
# はじめに
ここ数ヶ月、実務インターンをするようになってから、インターン先が変わるたびに環境構築をしているのですが、適当にやっているせいでJDKのバージョンが原因なエラーに幾度となく躓いてきました。
毎回調べて、
ああ…JDKのversionが原因か。で、どうするんだっけ。と調べるのが不毛なため備忘録として記事にしました。
この記事は自分のユースケースにおける対処法なため、他の方には当てはまらないかもしれませんが、随時updateしていければと思います。
# 躓いた具体的なユースケース
まず、
“`Powershell
% java -vesion
“`とターミナルで打つと、ご自身のJDKのバージョンがいくつか確認できるのでご参考までに。
## How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
この時の自分のJDKは
“`Powershell
java 12.0.2 2019-07-16
“`でした。
> Java 9で「モジュール」の機能が
Wifi経由でadbコマンドを実行しよう(2.Linux編)
#はじめに
ずっとWindowsからAndroidアプリのテストをしていたので意識していませんでしたが、
Linuxからでもadbコマンドを実行することができるようです。
#使用ツール
– Linux環境
– teraterm
– Linux用のAndroid SDK
– WinSCP#手順
1. Android端末の開発者モードをONにしてUSBデバッグを可能にする。
2. PC、Android端末ともにWifiに接続。
3. Linux環境にAndroid SDKをインストール。
4. sdkmanagerコマンドでパッケージをインストール。
5. adb接続。
6. adbコマンドを実行。
7. adbを切断。ほとんど、[Wifi経由でadbコマンドを実行しよう(1.Windows編)](https://qiita.com/erik_t/items/47fcb7e2ec092bfb6761)と
やることは変わりませんが、
[3. Linux環境にAndroid SDKをインストール。](https://qiita.com/erik_t/items/8cb59d624b66
[備忘録][Android Studio]fontFamilyで独自フォントを選択できるようにする
# 1.resフォルダ配下にfontフォルダを作成する
resフォルダを右クリック→New→Directory
New Directory入力欄で「font」を入力してOKボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571891/9b63b0c4-0128-a082-3503-6bd2f2167568.png)# 2.fontフォルダ配下に独自フォントを配置する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571891/5bad0346-99d6-908c-8de7-954c9cba0244.png)# 3.fontFamilyで配置した独自フォントが選択できるようになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571891/c5bfd667-29e0-5
[備忘録]Kotlinでシングルトンクラスの作成方法
# シングルトンなクラスの作成方法
## 書き方その1
マルチスレッドに対応しています。
“` kotlin
// シングルトンクラス
class StatefulContext {companion object {
// シングルトンインスタンスの宣言
private var instance: StatefulContext? = null// インスタンス取得
fun getInstance() = instance ?: synchronized(this) {
instance ?: StatefulContext().also { instance = it }
}
}
}
“`## 書き方その2
1番目と同じです
“` kotlin
// シングルトンクラス
internal object StatefulContext {// シングルトンインスタンスの宣言
var instance: Stat
[kotlin] RecyclerViewの実装、クリックイベント付き
#今回やること
今更だけど kotlin でRecyclerViewを実装する。(自分用の備忘録としてほしかった)
クリックイベント処理の記事が少なかったのでタップしたらトーストを表示するのものを作ってみる。
これ↓!
#RecyclerViewの配置
android studio のパレットペインを使って Containersの中にある RecyclerViewをレイアウトに追加する。ドラッグしたらプロジェクトにRecyclerViewが追加され依存関係とかも最新のものが自動的に追加される。一応、依存関係
“`gradle:build.gradle
dependencies {
implementation ‘androidx.recyclerview:recyclerview:1.1.0’
}
“`
*
[Android]端末からサーバへ画像のアップロード
##はじめに
Androidで画像をPOSTし、サーバに保存する機能でてこずったため自分の備忘録兼、アウトプットとして書きます。プログラムのお仕事半年もしてないからいろいろおかしいかもしれないけど許してね。###追記
ご指摘を受けました。ありがとうございます!
>OkHTTP2はobsoletes扱いです。最新の4.3.1を使うようにしましょう。https://square.github.io/okhttp/changelog_3x/#version-300-rc1
https://square.github.io/okhttp/changelog/##環境
AndroidStudioでOkHttpを利用しています。
##OkHttp導入
* AndroidStudio画面左上の「Android」を「プロジェクト」に切り替え。
* [app]内のbuild.gradleを開く。
* ~~dependencies内に
“`
implementation ‘com.squareup.okhttp:okhttp:2.7.5’
“`を追記。(2.7.5はvarsionによって
[Android]Navigation でどこまで戻るか制御する (Pop To と Inclusive)
# はじめに
`Navigation` ではどこまで戻るかを`Pop To` と `Inclusive` にて制御できます。
今回は実際にサンプルアプリを作成して、どこまで戻るか制御してみたいと思います。| 用語 | 説明 |
| —- | —- |
| Pop To | `Back`ボタンを押したとき、どこの画面まで戻るか指定できる |
| Inclusive | `Pop Up`で指定した画面の1つ前に戻るようにする |# 準備
## `Navigation`をセットアップする
`Navigation` を利用したアプリケーションを作成するための下準備をします。
次の手順で必要なライブラリやクラス、レイアウトを生成していきます。“`groovy:build.gradle(app)
dependencies {
def nav_version = “2.1.0”
implementation “androidx.navigation:navigation-fragment-ktx:$nav_version”
implementat
libtorch を Android でビルドするメモ
https://pytorch.org/mobile/android/#building-pytorch-android-from-source
とりあえず一式ビルドするスクリプトあります(実態は cmake を読んでいる)
## setup
* Android SDK
* Android NDK
* cmake, ninja
* Gradleが必要です. Ubuntu 18.04 で Android Studio をインストールしておくのが楽でしょうか.
“`
export ANDROID_HOME=$HOME/Android/Sdk
export ANDROID_NDK=$HOME/Android/Sdk/ndk/21.0.6113669/
# export GRADLE_HOME=$HOME/local/gradle
“`gradle は `GRADLE_HOME`, `GRADLE_PATH` で設定はうまく行かないかもです. PATH で直接 `gradle` が見えるようにしておくのがよさそうです.
また, gradle は特定のバージョンでないとう
【和訳】Refactoring to Kotlin(Codelabs for the 2019 Android Dev Summit: Mountain View, October 23-24, 2019.)
[Android Dev Summit 2019
Codelabs for the 2019 Android Dev Summit: Mountain View, October 23-24, 2019.](https://codelabs.developers.google.com/ads19/)[Refactoring to Kotlin](https://codelabs.developers.google.com/codelabs/java-to-kotlin/index.html?index=..%2F..ads19)の日本語訳
# 1.ようこそ!
> [このコードラボは、中国語とブラジル系ポルトガル語でも利用可能です]
このコードラボでは、JavaからKotlinにリファクタリングする方法を学びます。また、Kotlin言語の規則とあなたが書いているコードがそれらに従うことを保証する方法についても学びます。
このコードラボは、プロジェクトをKotlinに移行することを検討しているJavaを使用している開発者に適しています。IDEを使用してKotlinに変換する事
桁区切り付きで数値を表示するExtension
`java.text.NumberFormat`を使うだけです。
“`kotlin
// Int用
fun TextView.setNumberWithThousandsSeparator(number: Int, locale: Locale = Locale.JAPAN) {
setNumberWithThousandsSeparator(number.toLong(), locale)
}// Long用
fun TextView.setNumberWithThousandsSeparator(number: Long, locale: Locale = Locale.JAPAN) {
text = NumberFormat.getNumberInstance(locale).format(number)
}// Float用
fun TextView.setNumberWithThousandsSeparator(number: Float, locale: Locale = Locale.JAPAN) {
setNumberWithThou
[Android] ProgressBarの使い方
##使い方
Widget.ProgressBarを追加して、表示非表示を変えるだけで良い。・Widget.ProgressBarを追加
![スクリーンショット (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/7fb4788d-f143-2f45-99e9-e0d204c25808.png)表示非表示の切替え
~~~java
private ProgressBar progressBar;
// 表示
progressBar.setVisibility(android.widget.ProgressBar.VISIBLE);
// 非表示
progressBar.setVisibility(android.widget.ProgressBar.INVISIBLE);
~~~##結果
こういうのが表示されれば成功。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506451/51
Retrofit2で共通エラー処理。ついでにローディングの判定
APIで共通のエラーレスポンス(400)などがあり、救う手段もないのでとりあえず「通信エラーが発生しました。」みたいなトーストを適当に出すことありますよね。
APIメソッド全てのステータスコードをハンドリングするのは面倒なのでどこかでまとめたいと思いました。
あまりアーキテクチャとかは意識してません#構成
“`
├── api
│ ├── exampleService
│ │ ├──ExampleApi
│ │ └──ExampleService
│ └── HttpManager
│
└── ExampleActivity
“`
ExampleActivity → ExampleApi → ExampleService → HttpManager
の順でAPIをコールしつつLiveDataを受け渡してHttpManager → ExampleActivity
のようにHttpManagerでパースしたエラーをActivityへLiveData使ってポストします。#実装
##HttpM