« 2020年10月 | メイン | 2021年11月 »

2020年12月 アーカイブ

2020年12月10日

ラジコ仕様変更

 12月3日からエアーチェックサーバーラジコの録音をしなくなりました。
 NHK教育が離脱したくらいで ココ数年安定していたところ Adobe Flash の廃止に伴う 久しぶりの仕様変更。
 しばらく コマンドラインサウンドレコーダーでタイムフリーを録音して応急処置。
 ポッドキャストも直接ダウンロードしにくくなりつつあるこのご時世、一日も早くリアルタイムエアーチェックを復旧させたい。...▼

続きを読む "ラジコ仕様変更" »

2020年12月11日

CentOS-8.3.2011 64bit + ffmpeg 4.2.4

CentOS-8.3.2011 64bit に、ネット上の情報を元に ffmpeg をインストールしようとすると次のようなエラー。
conflicting requests
  - nothing provides libSDL2-2.0.so.0()(64bit) needed by ffmpeg-4.2.4-1.el8.x86_64
  - nothing provides libSDL2-2.0.so.0()(64bit) needed by libavdevice-4.2.4-1.el8.x86_64
 最終的なインストールの記録は...▼

続きを読む "CentOS-8.3.2011 64bit + ffmpeg 4.2.4" »

2020年12月12日

おすすめ逆引き

Androidアプリ開発逆引きレシピ ISBN:9784798134512
第1章 ユーザーインタ ーフェース
第2章 コンポーネント
第3章 レイアウト
第4章 アプリ
第5章 画面操作
第6章 描画処理
第7章 マルチメディア処理
第8章 インターネット利用
第9章 SNSサービス
第10章 地図
第11章 デバイス
第12章 バックグラウンド動作
第13章 通知
第14章 連携処理
第15章 データ処理
第16章 データベース
第17章 公開
第18章 デバッグ
第19章 ライブラリの利用

続きを読む "おすすめ逆引き" »

2020年12月13日

FTPのみのレンタルサーバーをGitで更新したい

 ワードプレスで満足というかワードプレスでしかWEBコンテンツ作れない人が好んで選択する格安レンタルサーバ。 まもなく限界となりWEBアプリケーション構築となった時、ssh接続できない、Git管理できない。

 何百何千ものファイルをFTP管理しているつもりになって不要ファイルの肥溜めサーバーとなるのは火を見るより明らか・・・。 FTPでしかコンテンツを管理できないのを何とかできないか・・・ GitがFTPプロトコルをしゃべってくれれば良いものの今更FTPなのかクローンとフェッチのみ。

 調べてみると、git-サブコマンド(git-subcommand)を応用した "git-ftp" ツールが見つかります。さすが Git コマンドは奥が深い。
 前提 git-ftp version 1.6.0 早速 導入・・・▼

続きを読む "FTPのみのレンタルサーバーをGitで更新したい" »

2020年12月14日

deprecated対応

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

続きを読む "deprecated対応" »

2020年12月15日

RequestMultiplePermissions()記述例

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

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

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月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月18日

レーダーアニメーション

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

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

2020年12月19日

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

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

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

2020年12月20日

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

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

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

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月22日

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

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

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

2020年12月23日

Style Sheets + javascript でダークモード

 Webページをダークモードに対応。既存のスタイルシートと新たなダークモードスタイルシートを javascript で切り替えるアプローチ。
 デフォルトでシステム設定に従い、閲覧者の操作でライトモード・ダークモードを選択可能にする最小限の実装例...▼

続きを読む "Style Sheets + javascript でダークモード" »

About 2020年12月

2020年12月にブログ「Remix.asia」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2020年10月です。

次のアーカイブは2021年11月です。

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