メイン

Android アーカイブ

2023年03月03日

Android Studio Dolphin to Flamingo update, build error.

Android Studio Dolphin | 2021.3.1 Patch 1
Build #AI-213.7172.25.2113.9123335, built on September 30, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 8
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
から
Android Studio Flamingo | 2022.2.1
Build #AI-222.4459.24.2221.9862592, built on March 31, 2023
Runtime version: 17.0.6+0-b2043.56-9586694 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 8
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
    gradle.version.catalogs.dynamic.support=true
へアップデート(インストーラ "android-studio-2022.2.1.18-windows.exe” を実行しただけ)。
 直後、Empty Views Activity テンプレートで 新規プロジェクトを作成するとビルド以前のエラー。原因は...▼

続きを読む "Android Studio Dolphin to Flamingo update, build error." »

2022年12月08日

Screen Code Analyzer から firebase へデータ送信

 前回の「Firebase Functions + Firestore」の具体的応用例。
 画面上表示されたQRやバーコードをスキャンする「スクリーンコードアナライザー」が標準装備するデータ送信先を、サーバー設置することなく簡単に firebase に出来る。

...▼

続きを読む "Screen Code Analyzer から firebase へデータ送信" »

2022年10月10日

Image Asset ツールが起動しない?!

Android Studio Bumblebee | 2021.1.1 で正常だった Image Asset ツールが Dolphin | 2021.3.1 にバージョンアップして起動しない現象。

再現環境 ↓
Android Studio Dolphin | 2021.3.1
Build #AI-213.7172.25.2113.9014738, built on September 1, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 8
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
 WEBの代替サービス...▼

続きを読む "Image Asset ツールが起動しない?!" »

2022年10月09日

Java11から導入された関数が使えない?!

サブタイトル:オリジナル ライブラリ jar ファイル作成と 利用パターン
再現環境
Android Studio Dolphin | 2021.3.1
Build #AI-213.7172.25.2113.9014738, built on September 1, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 8
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
Android Studio Dolphin | 2021.3.1
Build #AI-213.7172.25.2113.9014738, built on September 1, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 6
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
 これらの Android Studio は Java11 が使えるはずが、なぜか
int i = 0x20BB7;//ツチヨシ Unicode
String str = java.lang.Character.toString( i );
をビルドすると
「エラー: 不適合な型: 精度が失われる可能性があるintからcharへの変換」
"error: incompatible types: possible lossy conversion from int to char".
のコンパイルエラー。
 Java11から導入された「public static String toString​(int codePoint )」関数を使用する為
プロジェクト\app\build.gradle
~
android {
	~
	compileOptions {
		sourceCompatibility JavaVersion.VERSION_11
		targetCompatibility JavaVersion.VERSION_11
	}
}
~
を指定。やみくもに検索して見つかる環境変数「JAVA_HOME」値 や、gradle.properties「org.gradle.java.home」値を指定する情報は関係なさそう。
GitHub commit 419b837d40a6995bc690610bd995167ebe07623f
 ところが...▼

続きを読む "Java11から導入された関数が使えない?!" »

2022年10月08日

Basic Activity 備忘録

●2つのフラグメント画面を行ったり来たりするだけのシンプルな Basic Activity テンプレートを選択。
git commit

●Binding を除外。
git commit

●アクティビティ、フラグメントのライフサイクルを理解する為 ログを追加。
git commit

●First fragment のボタンクリックで Second fragment へメッセージを渡して表示。
git commit
元々、引き数を埋め込むStringリソースが用意されているのに Second fragment の TextView が表示されない。これを完成させる。


●逆に Second fragment のボタンクリックで First fragment へメッセージを渡して表示。
git commit

●応用として Activity、Fragment どちらからも利用できる DialogFragment 実装例。...▼

続きを読む "Basic Activity 備忘録" »

2021年11月10日

I/Ads: Ad failed to load : 3

 Google AdMob から「広告配信が中断されないよう、早急にご対応をお願いいたします」メールが。 2019年5月に最終更新したアプリで、今になってインタースティシャル広告の「偶発的クリックを誘導するレイアウト - 予期しないタイミングでのインタースティシャル広告の表示」を直せと。 最近の Google WEB 広告のが偶発的な気が・・・
 対応ついでに、AdMob の最新バージョン「com.google.android.gms:play-services-ads:20.5.0」にアップグレード。 すると、広告テストIDにもかかわらず
InterstitialAdLoadCallback()
 ▼
onAdLoaded()
 ▼
com.google.android.gms.ads.AdError.getMessage()
 ▼
No ad config.
I/Ads: Ad failed to load : 3
原因は・・・▼

続きを読む "I/Ads: Ad failed to load : 3" »

2021年11月04日

gradleエラーその2

Execution failed for task ':app:processDebugMainManifest'.
> Manifest merger failed : Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
エラーメッセージに示される
https://developer.android.com/guide/topics/manifest/activity-element#exported
によれば...▼

続きを読む "gradleエラーその2" »

2021年11月03日

Google ADmob sample bug ?

仮装大賞パネル 無料ジョークアプリ「仮装大賞パネル」へ google admob「アプリ起動時広告」を組み込む為、公式ドキュメント
https://developers.google.com/admob/android/app-open-ads?hl=ja
を参考にサンプルコード
https://github.com/googleads/googleads-mobile-android-examples/tree/master/java/admob/AppOpenExample
commit b54accd1c410a1bf8a5fdcd95a1b19d85d456ca7 (HEAD -> master, origin/master, origin/HEAD)
Date: Wed Sep 22 12:55:50 2021 -0700
をビルド。タイトルから起動時1回限り広告表示を想像させるこのサンプルは...▼

続きを読む "Google ADmob sample bug ?" »

2021年11月02日

アプリの軽微なアップデートをしたところ「非承認」???

 原因は Google Play ストア でのアプリ表示名称の末尾に「Free」が付いていたこと。
最初のリリースはパスしていた為、相変わらず抽象的な原因説明でアップデートに数日・・・。 有料版アプリと区別する為、ストア でのアプリの名称だけを「~ Free」から「~ Mini」に変更してアップデート「承認」。 現在では日本語「~ フリー」も個別に指摘されるので「~ ミニ」へ。
Google Play ストアに掲載するアプリ情報に関するガイドラインを改定します
2021年5月18日火曜日
https://android-developers-jp.googleblog.com/2021/05/updated-guidance-to-improve-your-app-quality-and-discovery-on-google-play.html
価格やプロモーションを示すキーワードを使用しないでください
 アプリケーションコードのパッケージ名称は無関係。

2021年11月01日

突然のgradleエラー

 数日前までデフォルトで新規プロジェクトをビルド出来ていた
Android Studio 4.2.2の Empty Activity
が突然 gradle エラー。
The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.appcompat:appcompat:1.4.0.
AAR metadata file: C:\Users\wanko\.gradle\caches\transforms-2\files-2.1\b70a38d32b407cc6af29424a07f54027\appcompat-1.4.0\META-INF\com\android\build\gradle\aar-metadata.properties.
 解決方法を調べると...▼

続きを読む "突然のgradleエラー" »

2020年12月22日

レーダーアニメーション 2

 レーダーと言えば、魚群探知機や戦闘機で搭載される円形のレーダー。レーダーアニメーションの円形版の実装例。

続きを読む "レーダーアニメーション 2" »

2020年12月21日

VirtualDisplay for API 29

VirtualDisplay 実装例」を API 29 の Emulator で実行すると下記ランタイムエラー。
2020-12-21 01:28:56.035 3538-3538/asia.remix.virtualdisplay E/AndroidRuntime: FATAL EXCEPTION: main
    Process: asia.remix.virtualdisplay, PID: 3538
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=450066721, result=-1, data=Intent { (has extras) }} to activity {asia.remix.virtualdisplay/asia.remix.virtualdisplay.MainActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4845)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
        at android.os.Parcel.createException(Parcel.java:2071)
        at android.os.Parcel.readException(Parcel.java:2039)
        at android.os.Parcel.readException(Parcel.java:1987)
        at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231)
        at android.media.projection.MediaProjection.(MediaProjection.java:58)
        at android.media.projection.MediaProjectionManager.getMediaProjection(MediaProjectionManager.java:104)
        at asia.remix.virtualdisplay.MainActivity$1.onActivityResult(MainActivity.java:62)
        at asia.remix.virtualdisplay.MainActivity$1.onActivityResult(MainActivity.java:57)
        at androidx.activity.result.ActivityResultRegistry.doDispatch(ActivityResultRegistry.java:377)
        at androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:336)
        at androidx.activity.ComponentActivity.onActivityResult(ComponentActivity.java:624)
        at androidx.fragment.app.FragmentActivity.onActivityResult(FragmentActivity.java:164)
        at android.app.Activity.dispatchActivityResult(Activity.java:8110)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4838)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886) 
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:476)
        at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:135)
        at android.os.Binder.execTransactInternal(Binder.java:1021)
        at android.os.Binder.execTransact(Binder.java:994)
API 29 から、getMediaProjection()の前に、サービスではないが startForeground() が必要...▼

続きを読む "VirtualDisplay for API 29" »

2020年12月20日

常に前面に表示するオーバーレイ

 スクリーンコードアナライザで解析中のマーカーやレーダーアニメーションを他のアプリの上に重ねて表示する基本実装。

続きを読む "常に前面に表示するオーバーレイ" »

2020年12月19日

サービスのライフサイクル

 スクリーンコードアナライザではバックグラウンドで画面上のQR・バーコードを解析する為「サービス」を利用。
 このサービスのライフサイクルを理解するための Android 8.0 (API レベル 26) とAndroid 9.0 (API レベル 28) に対応した基本実装サンプル。

続きを読む "サービスのライフサイクル" »

2020年12月18日

レーダーアニメーション

 スクリーンコードアナライザで使用しているレーダーアニメーションの実装例。

続きを読む "レーダーアニメーション" »

2020年12月17日

署名付きBundre/APK作成時のLintエラー

Android Stidio 4.2.2

 いよいよ公開しようと Build > "Generate Signed Bundre or APK" でビルドすると
Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
で失敗。対応方法は...▼

続きを読む "署名付きBundre/APK作成時のLintエラー" »

2020年12月16日

VirtualDisplay 実装例

VirtualDisplaycommit e87093e
VirtualDisplay の出力先を SurfaceView.getHolder().getSurface() として常に端末の画面で SurfaceView を更新するシンプルな例。

commit 2ba351b
次に VirtualDisplay 出力先を ImageReader.getSurface() として onClick で ImageView を更新する例。

 このままだと左に寄って機種によって例えば Galaxy S7 edge では画像のような現象が生じる。ImageReader.acquireLatestImage() で取得する Image.Plane の幅のピクセル数が
Image.getWidth() や DisplayMetrics.widthPixels の値より幅が広い。

commit 1b6140f
最終的にはImageReader.acquireLatestImage() で取得したサイズで ImageReader・VirtualDisplayを作り直すことで改善。

Github VirtualDisplaySample

続きを読む "VirtualDisplay 実装例" »

2020年12月15日

RequestMultiplePermissions()記述例

 こちら「deprecated 対応」の「ActivityResultContracts.RequestPermission()」の複数権限時の書き方。
...▼

続きを読む "RequestMultiplePermissions()記述例" »

2020年12月14日

deprecated対応

 権限チェックなどで使用する startActivityForResult(), onActivityResult(), requestPermissions(), onRequestPermissionsResult() が 非推奨(deprecated)ということで java でのアップデート記術例。
...▼

続きを読む "deprecated対応" »

2020年10月18日

文字解析情報を画像上に重ね合わせる

 ML(Machine Lerning) Kit のサンプルでは、静止画も含め リアルタイムで解析情報を画像上に重ね合わせる。映画やニュースで見かけるような。
 最小構成のデジタル数字認識サンプルに、ML Kit サンプルを参考に最小限の文字解析情報オーバーレイを実装する。
 変更点は こちら...▼

続きを読む "文字解析情報を画像上に重ね合わせる" »

2020年10月17日

Firebase を使用した ML(Machine Lerning) Kit サンプル

 Google Firebase のドキュメントからリンクされる公式リポジトリ quickstart-android
git clone git@github.com:firebase/quickstart-android.git
に含まれる ML Kit は、現時点でまともに動作しない。「ML Kit Vision Quickstart Sample App」と比較してソースも半分以上消えており 移行途中?・・・
 ネット上には Firebase を使用したMK Kit の断片的な利用情報が見つけられるので下記gitコマンドで
$ git -C ~/AndroidStudioProjects/github/quickstart-android log --diff-filter=D --summary
としてソース削除履歴を調べると

続きを読む "Firebase を使用した ML(Machine Lerning) Kit サンプル" »

2020年10月16日

Error: The apk for your currently selected variant is not signed.

 ML(Machine Lerning) Kit の学習のため 「ML Kit Vision Quickstart Sample App」をダウンロード、ビルド、実行。
$ git clone git@github.com:googlesamples/mlkit.git ~/AndroidStudioProjects/github/mlkit
Fri Oct 30 08:41:29 2020 -0700 時点のソース。
 このサンプルのプロジェクト(mlkit/android/vision-quickstart/)を Android Studio 4.0 で 「Open an existing Android Studio project」すると、gradle の同期に数分間(ADSL)。
 その後 build しようとすると 下記エラー(1)(2)。
Error: The apk for your currently selected variant (vision-quickstart-proguard.apk) is not signed. Please specify a signing configuration for this variant (proguard).
解決方法は...

続きを読む "Error: The apk for your currently selected variant is not signed." »

2020年10月15日

デジタル数字認識

 血圧測定できるスマートウォッチから、Bluetooth(ブルートゥース)で 計測値を取り込むのが王道?
 腕時計する習慣もなく、そもそも疑わしい測計値。せっかく家庭用の血圧計(omron HEM-737)があるので、この液晶表示をスキャンするだけなら便利かも。

 調べると Google Cloud Vision API、tess-twoライブラリ などが有名。現時点で Firebase の ML(Machine Learning) Kit が比較的 新しそう。クラウドに依存せず オフライン の スタンドアロン(オンデバイス/on-device) で動作することを確認済。
 公式のガイドが基本、前半の「画像内のテキストを認識する(Recognize Text in Images )」で留めるのがポイント。
https://firebase.google.com/docs/ml-kit/android/recognize-text
 ちなみに「ドキュメントの画像でテキストを認識する(Recognize text in images of documents)」を実装すると、実行時に停止し「Cloud Vision API」を有効にすることが促され、さらに Firebase 無料の spark から従量課金の Blaze プランへ誘導される。
 不完全な Kotolin 断片ソース か 切り分けしにくい大きなデモが多かったので、必要最小構成の実装例。
https://github.com/remixgrjp/OCR1
 Andorid Studio 4.0 の Basic Activity から、Firebase の設定を追加し オンデバイスで画像からテキストを認識する必要最小構成。

続きを読む "デジタル数字認識" »

2020年10月03日

Pixel4 開発用 USB Type C Type B 変換ケーブル

Rampow USB Type C ケーブル【1m/黒/保証付き】急速充電 QuickCharge3.0対応 USB3.1 Gen1規格 Sony Xperia XZ/XZ2, Samsung S10, Asus Zenfone 2, Fujitsu Arrows, iQOS(アイコス)3, GoPro Hero 5/6 タイプc多機種対応 在宅勤務支援
 新しい開発用Android Pixel4 の USB は Type C。
 DELL vostro 3491 の USB はType A。
 変換ケーブルにはデータ通信NGなものもあるようで、今回調達したこのケーブルはOK。

2020年10月01日

お気に入り Editor > Code Style > Java

Android Studio editconfig  巷に多いコードスタイルは 詰まっていて見にくいため、新環境などのマイグレーションお気に入り設定。
Android Studio 4.1
editorconfig.xml (InteliJ IDEA code style XML)
.editorconfig (EditConfig File)

2019年10月11日

10/11(金)AM4:51 にグーグルから届いたメール

[Action Required] Update your Android targetSdkVersion by November 1
 Hello Google Play Developer,

This is a reminder that starting November 1, 2019, updates to apps and games on Google Play will be required to target Android 9 (API level 28) or higher. After this date, the Play Console will prevent you from submitting new APKs with a targetSdkVersion less than 28.

Configuring your app to target a recent API level ensures that users benefit from significant security and performance improvements, while still allowing your app to run on older Android versions (down to the minSdkVersion).

Action required

Please ensure that your apps are configured to target at least Android 9 (API level 28) by November 1, 2019. For technical advice on how to change your app's target API level to meet these requirements, refer to the migration guide.

Affected apps

The apps included below have one or more APKs—in production or testing tracks—that aren't currently targeting API level 28 or higher. Apps are listed with the maximum version code and corresponding targetSdkVersion. If you have more than 20 apps that could be affected in your account, please check the Play Console for a full list.
asia.remix.clocksignal   4   24
asia.remix.clocksignals   3   24
asia.remix.clocktalk   4   26
asia.remix.clocktalkfree   7   26
asia.remix.daydreammovie   2   23
asia.remix.dictation   2   25
asia.remix.dictationfree   3   24
asia.remix.eiken2p   1   23
asia.remix.eiken3   1   23
asia.remix.eiken4   1   23
asia.remix.eiken5   1   23
asia.remix.koumon   1   23
asia.remix.learningcard   1   23
asia.remix.metronome   2   23
asia.remix.newsreaderfree   3   26
asia.remix.orgelfree   4   24
asia.remix.rokuseicm   1   24
asia.remix.sportswatchfree   3   24
asia.remix.wakeuponlan   1   23

The Google Play Team
和訳は
https://developers-jp.googleblog.com/2019/03/2019-api.html
放置すると、インストール時にデンジャラスなメッセージが表示される模様。

Android Studio 3.5.1 での対応手順・・・▼

続きを読む "10/11(金)AM4:51 にグーグルから届いたメール" »

2019年10月10日

Android Studio のWiFi接続

Android Studio 3.4.2 で 例えば
~/AppData/Local/Android/sdk/platform-tools/adb connect 192.168.0.3
としたときのWiFi接続エラー時のメッセージが以前と異なり
missing port in specification: tcp:192.168.0.3
のようになる。仕様が変わったのか?
~/AppData/Local/Android/sdk/platform-tools/adb connect 192.168.0.3:5555
ポートを明示することで無事接続。
 それでも WiFi接続できないときは...▼

続きを読む "Android Studio のWiFi接続" »

2018年06月09日

Androidアプリをlinuxコマンドラインでビルド(CentOS7.3 32bit)

 今回のOSは
CentOS-7-i386-Minimal-1611.iso
で構築した32ビット版のミニマムインストール
CentOS release 7.3.1611 (AltArch)
javac 1.8.0_171
openjdk version "1.8.0_171"
ldd (GNU libc) 2.17
CentOS7 64bitの時と同様の手順でビルドすると
:app:mergeDebugResources
AAPT err(Facade for 25944244): /opt/android-sdk/build-tools/25.0.2/aapt: /opt/android-sdk/build-tools/25.0.2/aapt: バイナリファイルを実行できません
このエラーメッセージからは様々な情報見つかるが、そもそも32ビットOSには対応していないことが原因。エミュレータの為なのか???
 どうしても32ビットOSでビルドしたければ、32ビット版の build-toolsを指定する...▼

続きを読む "Androidアプリをlinuxコマンドラインでビルド(CentOS7.3 32bit)" »

2018年06月03日

Androidアプリをlinuxコマンドラインでビルド(CentOS6.9 64bit)

前回、CentOS7 64bit + openjdk1.8 + Android Studio Command line tools(sdk-tools-linux-4333796.zip) OK。 しかしミニマムインストールの CentOS6.9 64bitに同様のインストールするとビルドに失敗する。
:app:mergeDebugResources
AAPT err(Facade for 464201322): /opt/android-sdk/build-tools/25.0.2/aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/android-sdk/build-tools/25.0.2/aapt)
GNU Cライブラリ(glibc) が古いことが原因。
yum info glibc
2.12
https://developer.android.com/studio/ によれば動作要件は
GNU C Library (glibc) 2.19 or later
前回 CentOS7 64bitでは 2.17 で一応ビルド成功している。 様々なlibc関連の情報が見つかり ソースからのメークも試したものの、最終的には...▼

続きを読む "Androidアプリをlinuxコマンドラインでビルド(CentOS6.9 64bit)" »

2018年06月02日

Androidアプリをlinuxのコマンドラインでビルドする(CentOS7 64bit)

 32ビット版CentOS6.9でダメだったので いろいろ調べてみることに。
OSは
CentOS-7-x86_64-Minimal-1611.iso
で構築した64ビット版のミニマムインストール
CentOS Linux release 7.3.1611 (Core)
ビルド環境は
https://developer.android.com/studio/
で、現時点の Command line tools only の Linux版
sdk-tools-linux-4333796.zip
をダウンロード。ルートではなく
# useradd -g wheel taro
で作成したユーザーで操作。java は
$ sudo yum -y install java-1.8.0-openjdk-devel
$ javac -version
javac 1.8.0_171
$ java -version
openjdk version "1.8.0_171"
アンドロイド コマンドライン ビルド ツールは...▼

続きを読む "Androidアプリをlinuxのコマンドラインでビルドする(CentOS7 64bit)" »

2018年01月07日

スクリーンセーバーの参考となる古いサンプル

https://android.googlesource.com/platform/packages/screensavers/WebView/+/master/
の WebView-master.tar.gz を展開・コンパイルすると、「&~; がない」、「head がない」、「body がない」など不思議なエラー。
C:\Users\taro\AndroidStudioProjects\ScreensaverWeb\app\src\main\res\assets\default.html
Error:(20, 22) Error: エンティティ"ldquo"が参照されていますが、宣言されていません。
Error:Execution failed for task ':app:mergeDebugResources'.
> C:\Users\toshi\AndroidStudioProjects\ScreensaverWeb\app\src\main\res\assets\default.html:20:22: Error: エンティティ"ldquo"が参照されていますが、宣言されていません。
原因は・・・▼

続きを読む "スクリーンセーバーの参考となる古いサンプル" »

2018年01月06日

オリジナルスクリーンセーバー

 Androidのスクリーンセーバーに動画を使いたい。
 ところが、標準の「フォト」でmp4形式動画ファイルを指定しても再生できない。
 オリジナルスクリーンセーバーを追加できそうなので作ってしまう。
 決め打ちの Movies/sample.mp4 を繰り返し再生するだけのシンプルなアプリコードをGitHubに公開。
https://github.com/remixgrjp/DreamServiceMovie
Android studio 2.3.3 でビルド可能。Empty Activity からプロジェクトを作成し
app/src/main/AndroidManifest.xml
app/src/main/java/asia/remix/daydreammovie/DreamServiceMovie.java
app/src/main/res/layout/dream_service.xml
を編集したもの。
 Widgetと同じくRun → Edit Configuraions... → Run/Debug Configuraions → Launch Option → Nothing とすればインストール可能。

続きを読む "オリジナルスクリーンセーバー" »

2018年01月05日

au HTC J butterfly HTL23 バッテリー交換

HTL23 フルセグ受信・ワンセグタイマー録画可能で 画素数・音質良しのau HTC J butterfly HTL23。
 このバッテリーが寿命となって交換することに、もちろん自己責任で。必要最小限の分解交換手順・・・▼

続きを読む "au HTC J butterfly HTL23 バッテリー交換" »

2018年01月02日

Android音声合成の基本形

 android.speech.tts.TextToSpeech でテキストを読み上げる最小限サンプル。
Githubのソースは AndroidStudio2.3.3 Basic Activityテンプレートが元。
app/build.gradle

compile 'com.android.support:appcompat-v7:24.+'
compile 'com.android.support:design:24.+'

としてAndroid2.3 以上に対応。ポイントは...▼

続きを読む "Android音声合成の基本形" »

2018年01月01日

Android7 の x86版 を仮想環境にインストール

前提環境は次の組み合わせ。
android-x86_64-7.1-r1.iso / Windows 7 / Virtualbox 5.0.10
android-x86_64-7.1-r1.iso / Windows 10 / Virtualbox 5.1.30
文末でエクスポートイメージをプレゼント!
一通りの流れは...▼

続きを読む "Android7 の x86版 を仮想環境にインストール" »

2017年10月26日

ApiDemos のビルド

 参考にする為 グーグルのサンプル ApiDemos をビルドした時の記録。
 環境は、Windows7, Android Studio 2.3.3 SDK23, Nexus 5(Android 6.0.1)。

https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/
から最新のソースを取得して Android Studioでインポート。
SDK26 のインストールを求められるので追加。
さらに SDK24, 25 のインストールを求められるので追加。

 なぜか
ApiDemos\app\src\main\res\xml\preference_switch.xml
の拡張子.xmlが無くなっている為ビルドエラーとなるのでファイル名を修正。

 次は
「パッケージandroid.support.annotationは存在しません」
「パッケージandroid.support.v4.printは存在しません」
と警告されたので
Project Structure > app > Dependencies > +
からライブラリを検索して追加。
ApiDemos\app\build.gradle
の dependencies ブロックに
compile 'com.android.support:support-annotations:26.0.0-alpha1'
compile 'com.android.support:support-v4:26.0.0-alpha1'
が追記される。

 最後まで残ったエラー
「パッケージcom.google.android.mmsは存在しません」
については これとは別にソースをビルド必要な模様。
 今回 通信関係のサンプルは不要なので依存しているソース
ApiDemos\app\src\main\java\com\example\android\apis\os
MmsWapPushReceiver.java
MmsMessagingDemo.java
を削除してビルド成功。野良アプリでよければ→ ApiDemos.apk

続きを読む "ApiDemos のビルド" »

2017年10月23日

勝手にパノラマ画像が!?

最大瞬間風速30から45メートルで関東を通過中の台風21号 ラン(LAN)。
Nexus 5、Android 6.0.1 で 多摩川の様子を続けて5枚撮影。1枚目と4枚目は誤フラッシュやベランダ写りこみの為削除。
なんとか会社に到着し、撮影から約3時間後にパノラマ写真が出来上がったという通知が。
▼IMG_20171023_054855.jpg 左方向

▼IMG_20171023_054906.jpg 正面

続きを読む "勝手にパノラマ画像が!?" »

2017年08月06日

スマートフォンを内線電話のように使う

Windows7上のVirtualBox Version5.0.10 で RedHat 64ビット仮想環境を作成。
ネットワークはブリッジアダプターとし、その他はデフォルトの設定値。
http://www.asterisk.org/downloads/asterisknow
から
AsteriskNow-1013-current-64.iso
をダウンロードし、仮想環境のストレージ→光学ドライブへ指定後 起動。
Centos6系同様にインストールし、ネットワーク設定にLAN内の固定IPを指定。

続きを読む "スマートフォンを内線電話のように使う" »

2016年07月05日

オリジナルandroid.view.View参考

Android ADK 組込みプログラミング完全ガイド (Smart Mobile Developer)
全サンプルコードは
https://www.shoeisha.co.jp/book/detail/9784798125930
からダウンロード可能。
『第8章 Android 対応の電子オルゴールを作る』
の簡易サンプルの画面・・・▼


続きを読む "オリジナルandroid.view.View参考" »

2016年07月03日

simple_list_item_1 + SimpleAdapter

 android.widget.ListView を使う定番サンプル。
String[] strings = { "1列目", "2列目", "3列目" };
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
	getApplicationContext()
,	android.R.layout.simple_list_item_1
,	strings
);

 実際には選択リストの表示名とは別にひもづいた値を利用することがほとんど。
 そこで標準のレイアウト android.R.layout.simple_list_item_1 のまま android.widget.ArrayAdapter ではなく android.widget.SimpleAdapter に交換してみる。 あえて動的配列で...
ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map = new HashMap<String, Object>();
map.put( "display", "1列目" );
map.put( "offset", 1 );
arrayList.add( map );
map.put( "display", "2列目" );
map.put( "offset", 2 );
arrayList.add( map );
map.put( "display", "3列目" );
map.put( "offset", 3 );
arrayList.add( map );

SimpleAdapter simpleAdapter = new SimpleAdapter(
	getApplicationContext()
,	arrayList
,	android.R.layout.simple_list_item_1 ←★
,	new String[]{ "display"},
	new int[]{android.R.id.text1} ←★
);

2016年07月02日

地図に十字中心線を表示

 Android Studio2.1.2 のテンプレートGoogleMapsActivityの地図上に十字中心線を表示する簡単な方法。
 その前に、Google Maps APIキーをセットしコンパイルすると
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
 メソッド数の上限を超えた(Building Apps with Over 65K Methods)
→ https://developer.android.com/studio/build/multidex.html?hl=ja
ということで
MyApplication\app\build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "asia.remix.map"
        minSdkVersion 10
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        multiDexEnabled true ★追加
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.1.1'
    compile 'com.google.android.gms:play-services:9.4.0'
}

MyApplication\app\src\main\AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest package="example.myapplication"
          xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <!--
         The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
         Google Maps Android API v2, but you must specify either coarse or fine
         location permissions for the 'MyLocation' functionality. 
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:name="android.support.multidex.MultiDexApplication" ★追加
    >

        <!--
             The API key for Google Maps-based APIs is defined as a string resource.
             (See the file "res/values/google_maps_api.xml").
             Note that the API key is linked to the encryption key used to sign the APK.
             You need a different API key for each encryption key, including the release key that is used to
             sign the APK for publishing.
             You can define the keys for the debug and release targets in src/debug/ and src/release/. 
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key"
            />

        <activity
            android:name=".MapsActivity"
            android:label="@string/title_activity_maps"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>
それぞれ ★印の行を追加。
ちなみに googleの巨大なライブラリを使う場合
MyApplication\gradle.properties

左ペインツリー Projectの Gradle Scripts/gradle.properties

VM起動オプション
org.gradle.jvmargs=-Xmx2048m
を指定するとメモリ不足解消とコンパイル時間を短縮(約1/10)。
本題の十字中心線は...▼

続きを読む "地図に十字中心線を表示" »

2016年01月04日

簡易エンドロール

endrollMin SDK Version 10
Android 2.3.4端末 HTC EVO ISW11HT
Android 4.2.2端末 Samsung GALAXY NEXUS SC-04D
Android Studio 1.5.1

ジョークアプリを作った際に試した簡単なエンドロール。
Empty Activity でプロジェクトを新規作成▼

 ↓
endroll

続きを読む "簡易エンドロール" »

2016年01月03日

タイトルバーとアイコン その2

TitleBarIcon Min SDK Version 10
Android 2.3.4端末 HTC EVO ISW11HT
Android 4.2.2端末 Samsung GALAXY NEXUS SC-04D
Android Studio 1.5.1

前回はツールバーへロジックでアイコンを追加
見た目は極力 XML ファイルへ記述したい。
XMLだけでツールバーへアイコンを表示させるには▼

続きを読む "タイトルバーとアイコン その2" »

タイトルバーとアイコン

endroll前提
Min SDK Version 10
Android 2.3.4端末 HTC EVO ISW11HT
Android 4.2.2端末 Samsung GALAXY NEXUS SC-04D
Android Studio 1.5.1

Android 2.* 当時、「タイトルバー」にアイコンを云々・・・だったものが転々と移り変わっている模様。
Android Studio で新しいプロジェクト「Blank Activity」「Empty Activity」「Google AdMob Ads Activity」を作成すると
従来 継承していた「Activity」が「AppCompatActivity」となり「タイトルバー」ではなく「ツールバー」という考え方に。
このツールバーを従来の アイコン+タイトル のスタイルにするには MainActivity で▼

続きを読む "タイトルバーとアイコン" »

2016年01月02日

簡単なAndroidアプリ

Android Studio 1.5.1 をインストールできたところで、早速 簡単なAndroidアプリを。
WiFiデバックすることが多いのでアンドロイド端末のIPアドレスなど ネットワーク情報を取得・表示させるだけのアプリ。
Android Studio で新規プロジェクトを作成。
 ↓
Empty Activity を選択。

続きを読む "簡単なAndroidアプリ" »

2016年01月01日

今どきのアンドロイド開発環境

以前より簡単になり
java JDK の他に 『Android Studio』をインストールすれば開発が可能に。
現時点の最新バージョンは 1.5.1 。中身・操作感は eclipce とほぼ同じ。
今回は こちらから All Android Studio Packages
android-studio-bundle-141.2456560-windows.exe
をインストール。
▼その他 備忘録

続きを読む "今どきのアンドロイド開発環境" »

2012年12月13日

アンドロイド アプリの署名

Eclipse → Project名 → 右クリック
 ▼
Android Tools → Export Signed Application Package

 ▼

続きを読む "アンドロイド アプリの署名" »

2012年12月11日

パッケージ名の変更

eclipseでのパッケージ名を変更する手順。
●プロジェクト名/AndroidManifest.xml
の package= を変更。
●プロジェクト名/res/values/strings.xml
の app_name を変更。

2012年12月10日

プロジェクト名の変更

プロジェクトインポートすると期待しないプロジェクト名になってしまうので変更する
Eclipse → Projectフォーカス → Refactor → Rename


Eclipse → Project名 → 右クリック

 ↓

続きを読む "プロジェクト名の変更" »

2012年12月09日

プロジェクトをWindows7からXPへ移行

 Windows7 上のエクリプスで開発していたプロジェクトをWindowsXP 上のエクリプスへ移行する手順。

●Windows7 上のワークスペースの対象プロジェクトフォルダを圧縮。
 ▼
●WindowsXP のデスクトップなどにプロジェクトフォルダを解凍。
 ▼
●WindowsXP 上のエクリプスにインポート。

このとき、前回のようにグーグル広告のAdMob SDK ライブラリなどを使用している時、下記のようなエラーがでた場合↓

続きを読む "プロジェクトをWindows7からXPへ移行" »

2012年12月08日

android sdk逆引きハンドブック

改訂2版 android sdk逆引きハンドブック
手元に1冊あるとなにかと便利。
サンプルソースもWEBからダウンロード可能。

目次
CHAPTER-05 ウィジェット
95 ウィジェット配置
96 クリックイベント
97 アクティビティ起動
98 削除検知
99 ノーティフィケーション示
100 ダイアログボックス表示
101 リストビュー示

CHAPTER-03
68 配列の中身をリストビューに表示する
69 リストビューレイアウトをカスタマイズ
70 リストビューにアイコン表示
71 リストビューを自動的に最下部までスクロール
72 リストビューにスムーススクロールタブを追加
73 リストビューのスクロールイベントを取得
74 リストビューの選択箇所を取得
75 リストビューの長押し箇所を取得
78 降りたたみ可能な親子リストビュー

CHAPTER-13
240 インテントでイベント追加

CHAPTER-14
262 サービス

2012年12月07日

アプリにグーグル広告を配置

アンドロイドアプリにグーグル広告を配置する手順。
確認した開発環境
WindowsXP SP3 32ビット
Windows7 SP1 32ビット
eclipse-SDK v4.2.1
Android4.2 (API 17)
Google AdMob Ads Sdk v6.2.1
確認機種
au HTC EVO 3D ISW12HT android4
au HTC EVO ISW11HT android2

●グーグル AdMobに登録。
googleが買収したスマートフォン向け広告配信のAdMob
http://www.google.co.jp/ads/admob/
に登録(googleアカウントでよい)して、アプリケーション毎にパブリッシャーID(APIキーではない)を取得。

「サイト及びアプリケーション」→「サイト及びアプリケーションの追加」

App名:WakeUpOnLAN
Android パッケージURL:http://www.mydmain/WakeUpOnLAN.apk
ジャンル:ツール
Appの説明:遠隔起動アプリケーション

「次へ」で一覧に追加されたアプリにマウスを移動したときに現れる「設定を管理」

画面に「パブリッシャーID」が表示される。


さらに↓

続きを読む "アプリにグーグル広告を配置" »

2012年12月05日

アプリをインターネットブラウザでダウンロードしてインストール

ここまでのアンドロイドアプリの実行手順
●eclipceからアンドロイドエミュレータへ転送・実行。
●eclipceからUSB接続したアンドロイド実機へ転送・実行。

さらに実際のアプリ配布のようにネットワークからインストールする方法 ↓

続きを読む "アプリをインターネットブラウザでダウンロードしてインストール" »

2012年12月04日

実機画面のキャプチャー

エクリプスでUSB接続されたアンドロイド実機画面をキャプチャーしてパソコンに保存。
eclipce → Open Perspective → DDMS

カメラアイコン → Device Screen Capture

Copy → ビットマップエディタ や ワード・エクセル で貼り付け

2012年12月03日

ミニUSB ならぬ マイクロUSB 220円から


Amazonベーシック USB 2.0 (A) オス - Micro B ケーブル (1.8m)

くれぐれも間違って充電専用ケーブルを選択しないこと。
Micro USBケーブルの違い(通信/充電/ホスト)
http://andoroseikatsu.blog115.fc2.com/blog-entry-83.html

2012年12月02日

開発したアプリを実機でデバッグ・実行

アンドロイド開発環境
●Intel Pentium4 2.6GHz 1GB
10年落ちPCのエミュレータではかなりストレス。
●Intel Core i5 2.50GHz 4GB
比較的最近のPCでも大きなアプリは厳しいかもしれない。
そこで実機でのデバッグ・実行。

新品中華パッドよりも安価に中古の型落ちスマートフォンを入手。
 ▼
実機 の設定変更
 ▼
USBケーブルで接続するPCにドライバをインストール
 ▼
eclipse の設定変更
詳細は↓

続きを読む "開発したアプリを実機でデバッグ・実行" »

2012年09月18日

プロジェクトをインポート

工学社Android4.0演習
HelloWorldが動作するところまで確認できたところで、WEBや書籍で紹介されているアプリを試す。
http://www.kohgakusha.co.jp/support/android4_en/index.html
に公開されているサンプル[Sample.zip]のHTTP通信。
プロジェクトのインポート手順は↓

続きを読む "プロジェクトをインポート" »

2012年09月17日

アンドロイドでHelloWorld

とりあえずお決まりの HelloWorld を表示するandroidアプリを作成。
なんとプロジェクトを作るだけで勝手にHello worldが埋め込まれたソースが生成される。
詳細は ↓

続きを読む "アンドロイドでHelloWorld" »

2012年09月16日

アンドロイド開発環境構築

Windows XP pro 32bit へアンドロイド開発環境を構築

●java JRE,JDK インストール
 ↓
●Eclipse インストール
 ↓
●Android SDK インストール
 ↓
●Android Development Tools(ADT)インストール
 ↓
●Androidエミュレータを設定

これで、コーディング・コンパイル・エミュレーションできる環境が整う。
詳細は↓

続きを読む "アンドロイド開発環境構築" »

About Android

ブログ「Remix.asia」のカテゴリ「Android」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

次のカテゴリはdatabaseです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。