急速充電まとめ
急速充電器についてのまとめ
急速充電の購入にあれこれ調べて購入したので備忘も兼ねてメモしたので、 シェアさせて頂きます
経緯と課題
急速充電器に関するブログ を見ると、サイズと重さと出力の3点で考えた時に以下モデルが優秀.
- CIO GaN 65W 3ポート 65w 83160 105g 45w+10w+5w 非対応。
しかしながら私の所有していたPCの仕様を見ると、 どうやら対応していない模様
私の所有していたPC
PC:ThinkPad X1 Carbon (5th)
PCのPD製品モデル.:TPS65982
充電できないアダプタ仕様:
- PPSに対応
- Source_Capabilitiesメッセージで通知するPDOの数が7個
充電器と、ThinkPad X1 Carbon (5th)との対応状況
- 1port
RAVPower 20W ★購入:PC持ち運びしない時用(旅に持っていくIphone充電用)
- 2port
RAVPower RP-PC133 65W 95287 115g 45w+18w 対応
RAVPower RP-PC128 90w 135200 192g 100wをシェア ★購入:PCを持ち運び・家・仕事用(ハイキング時などは家に置いていく。)
- 3port:
CIO GaN 65W 3ポート 65w 83160 105g 45w+10w+5w 非対応。
AUKEY Omnia Mix3 90w 130944 179g 60w+12w+12w
- 4port:
RAVPower RP-PC136 65w 127756 165g(250g) 18w+18w+12w+12w
HyperJuice GaN 100W Dual 100w 147900 197g ポート合計100W(45W+30W+12W+12W) 対応。
CIO LilNob Share 65w 76500 111g 20w+20w+15w 非対応。
所有端末(私の端末は何れもType-CのI/Fの充電口でOK)
Iphone13(充電供給口:Type-C) 急速充電には18Wで十分 IphoneSE2(充電供給口:Type-C) 急速充電には18Wで十分 Pixel3a (充電供給口:Type-C) 急速充電には18Wで十分 Lenovo ThinkPad (充電供給口:Type-C) 急速充電には45Wで十分
私の選択
旅用にRAVpowerの20W, PC充電用にRAVpowerの90W(PC自体は45Wで十分)
あくまでご参考までにして頂ければと思います
Storage Access Framework への置き換え (File:スキームからContent: スキームへ置き換えを行う)
Android OS 11( API level 30 導入)に辺り、StorageAccess周りの実装をFileスキームメインから、Contentスキームをメインとする実装に置き換えたので、 それに辺り、参考にしたサイトリンクを備忘用に貼っておく。(何もまとまっていませんが、参考になれば幸いです、、)
SAFによるlistFiles(),copyDocument,move,rename等
copyDocumentは課題あり。 https://stackoverflow.com/questions/66660155/android-saf-cannot-copy-file-flag-supports-copy-not-set
use ContentProvider https://stackoverflow.com/questions/64820884/documentscontract-copydocument
SAFの初期URL指定について
use ContentProvider https://www.tabnine.com/code/java/methods/android.content.ContentProviderClient/call
EXTRA_INITIAL_URI https://stackoverflow.com/questions/67552027/android-11-action-open-document-tree-set-initial-uri-to-the-documents-folder
最終的に参考した(はず)のURL指定方法 https://www.mashen.zone/thread-3615414.htm?user=3
FileスキームからContentスキームへのConvert
直接,FileスキームからContentスキームへ変換できないので、InputStream/OutputStreamを介して変換した。 you cannot directory convert File scheme to Content scheme. So, first you open inputStream from File scheme copy inputstream to outputstream at Byte format. then, save outputStream as Content scheme.
https://qiita.com/wakamesoba98/items/98b79bdfde19612d12b0
- 参考
public static final int EOF = -1; private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; public static boolean convertFileToContent(File file, Uri uri, context) { try { InputStream inputStream = null; OutputStream outputStream = null; try { iuputStream = new FileIutputStream(file); outputStream = context.getContentResolver().openOutputStream(uri, "w").; long fileSizeSaved = copy(inputStream, outputStream); outputStream.flush(); return true; } catch (IOException e) { return false; } finally { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } } } catch (IOException e) { return false; } } private static long copy(InputStream input, OutputStream output) throws IOException { final byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; long count = 0; int n; while (EOF != (n = input.read(buffer))) { output.write(buffer, 0, n); count += n; } return count; }
Android11ではall files access permission権限が追加され、強力な権限のため、ユーザープライバシーを考慮し出来る限り推奨されない。
-android11(API level30)->pravacy->storage update https://developer.android.com/about/versions/11/privacy/storage?hl=ja
- MANAGE_EXTERNAL_STORAGE
- MediaStoreAPI
https://developer.android.com/training/data-storage/shared/media
Fileスキームで使用していた APIについて
http://s-prism3.seesaa.net/article/430252817.html -local storage -> getExternalFilesDirs() -shared storage -> getExternalStorageDirectory()
他、GoogleChromeOSをメンテナンスする開発者向けに、参考までに
非表示領域を表示する https://ahiru8usagi.hatenablog.com/entry/Chromebook_Android_Storage
公式 https://support.google.com/chromebook/answer/1700055?hl=ja
about GoogleOS https://developer.android.com/chrome-os/intro?hl=ja
railsでsqlite3のversionエラーで正常に動作しない件について
AWSの勉強をしていたところ、 rails sを実行するも下記エラーが発生した。 解決方法が判明したのでシェア。
★エラー名
Specified 'sqlite3' for database adapter, but the gem is not loaded. Add gem 'sqlite3'
to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError)
★解決方法
GemFileを開く.
以下のように修正する.
変更前 gem 'sqlite3'
変更後 gem 'sqlite3', '~>1.3.0'
★原因
Rails 5.0.7.2 では sqlite3 のバージョン 1.4 系に対応していないといったところが原因の模様。
AndroidでThis version of Android Studio cannot open this project, please retry with Android Studio 4.2 or newer.とエラーが出てRun実行失敗したときの対応メモ.
androidでRun実行時に以下のエラーが出て失敗、解決方法が判明したのでシェア.
error
This version of Android Studio cannot open this project, please retry with Android Studio 4.2 or newer.
環境
android version 4.1.3
Win10 64bit
原因.
Gradleとpluginのversionが噛み合っていないことが原因の模様.
対策.
File→Project Structureを開く.. Gradleとpluginのversionをそれぞれ以下のように変更.
以下のversion要件表に基づいて変更.
Gradle | Plugin | |
---|---|---|
変更前 | 4.2.2 | 6.7.1 |
変更後 | 4.1.3 | 6.7 |
[参考]Plugin vs Gradleの要件表.
Plugin | Gradle |
---|---|
4.1.0 以降 | 6.5 以降 |
4.2.0 以降 | 6.7.1 以降 |
追記
その後、Android Studioを使ってエミュレーター上のAndroidでアプリを実行しようとすると 「Waiting for target device to come online」というようなメッセージが表示されたままアプリが実行できない状態になった. 以下のURLに倣い、wipe dataを行ったところ、インストールされるようになった。
androidでDBをコンソールでアクセスする時の注意点をシェア.
androidでDBをコンソールでアクセスする時の注意点をシェア.
1. GooglePlay対応の入っていない仮想デバイスを準備する
※GooglePlay対応入りの場合、以下のようなエラーが出る.
error: inaccessible or not found参考URLhttps://qiita.com/uchip__/items/d128391cdb4169ccc3c5
2. コンソールを開き、sdk配下のplatform-toolsへ移動する.
run-asコマンドを使用して、databasesディレクトリにアクセスする。そうしないと、databasesに移動しようとすると「Permission denied」と表示される。以下のように入力する。
<コンソール操作例>
run-as (パッケージ名)
cd databases
sqlite3 (db名).db
PC ThinkPad X1 Carbon (5th)に合う急速充電器
急速充電まとめ
急速充電器の選ぶ基準について、私の持っているガジェットに合わせて選んでみましたので考え方をシェア(参考にはならないかもしれませんが)。
私の持っているガジェット類
- PC ThinkPad X1 Carbon (5th) (毎日使用)
- iphone-X (毎日使用)
- applewatch 4th (毎日使用)
- iphone-SE2 (使用頻度は低い)
- airpods 2th (使用頻度は低い)
調査結果
急速充電についての参考ブログ を見ると、サイズと重さと出力の3点で考えた時にCIO LilNob Shareモデルが優秀.
しかしながら私が持っているPCの仕様を見ると、対応していない模様。
- PC:ThinkPad X1 Carbon (5th)
- PCのPD製品モデル.:TPS65982
- 充電できないアダプタ仕様
- PPSに対応
- Source_Capabilitiesメッセージで通知するPDOの数が7個
購入を迷った3つのモデル
- HyperJuice GaN 100W Dual 100w 4port
- RAVPower RP-PC136 65w 4port
- RAVPower RP-PC128 90w 2port
結果、RAVPower RP-PC128を購入
結局RAVPower系は対応しているようなので、RAVPower RP-PC128を購入することに決定。
2port x type-c x 90w を選択した理由は、
- HyperJuice GaN 100W Dual は、大きさ重さの割に100wと実に優秀。しかし持ち運びを考えた時にやや大きい。
- RAVPower RP-PC136は、持ち運びを考えた時に、65w程度の実力しかない割に、配線込み250gと重い。さらに127756 mm3と他のモデルより相対的にやや大きい。
- RAVPower RP-PC128 は、大きさ重さの割に100wと実に優秀でかつ、type-cの2本ということで、実力を十分に発揮可能なportのみがついている。type-Aのみのapplewatchを持っているが、type-A -> type-c変換アダプタで良いかということで、私の持っているガジェットをtype-cに統合することで、本充電器を採用した。type-cに統合してしまうと今度はtype-Aの口しか受け付けていない飛行機や車で困りそうなので、その場合にtype-c -> type-A変換アダプタも用意しようと思っている。
使い方:
昼のリモートワーク時は、PC(45w)とiphone-X(18w)相当の充電として使用。 (使用頻度は低いiphone-SE2と、airpods 2thは昼にPCとiphone-Xの充電がmaxになっていたら充電する。)
夜の睡眠時は、iphone-X(18w)とapplewatch(5w)相当の充電として使用。
検討したモデル
(持ち運びの観点で、Wワットと体積(mm3)の重さ(g)の関係はかなり重要)
2port
メーカ 型番 | w | mm3 | g | 分配 | ThinkPad X1 Carbon (5th)に対応しているか |
---|---|---|---|---|---|
RAVPower RP-PC133 | 65W | 95287 | 115g | 45w+18w | 対応 https://worktoolsmith.com/ravpower-gan-usb-pd-charger-review-1/ |
RAVPower RP-PC128 | 90w | 135200 | 192g | 100wをシェア |
3port
メーカ 型番 | w | mm3 | g | 分配 | ThinkPad X1 Carbon (5th)に対応しているか |
---|---|---|---|---|---|
CIO GaN 65W 3ポート | 65w | 83160 | 105g | 45w+10w+5w | 非対応。 |
AUKEY Omnia Mix3 | 90w | 130944 | 179g | 60w+12w+12w |
4port
メーカ 型番 | w | mm3 | g | 分配 | ThinkPad X1 Carbon (5th)に対応しているか |
---|---|---|---|---|---|
RAVPower RP-PC136 | 65w | 127756 | 165g(250g) | 18w+18w+12w+12w | |
HyperJuice GaN 100W Dual | 100w | 147900 | 197g | ポート合計100W(45W+30W+12W+12W) | 対応。 |
CIO LilNob Share | 65w | 76500 | 111g | 20w+20w+15w | 非対応。 |
■
RaspberryPiからSlackにアップロードする.
workSpaceを新たに作る
slack api ページから Oauth & Permission タグを開く。
UserToken Scopesに以下へのpermissionを追加する.
※参考URL記載のpermissonからはslackのverが上がっているためか、 permission名が微妙に変わっているので注意.
■Python Code
準備:pythonコードにTokenや、チャンネルの識別情報を入力する.
- 上記で発行した下記のTokenを下記pythonデータに配りつける。
- チャンネルIDをslackサイトよりメモし記載する。
- チャンネルの名前をslackサイトよりメモし記載する。
実行:python capture.pyで実行する.
"capture.py"
import commands import time commands.getoutput("raspistill -w 1200 -h 900 img01.jpg -ev 3 -ISO 800") from slacker import Slacker token = "XXXX-XXXX-XXXXXX" slacker = Slacker(token) channel_name = "#"+"チャンネルの名前" slacker.chat.post_message(channel_name, 'this is chapture') result = slacker.files.upload('../camera/img01/image.jpg',channels=['チャンネルID']) # まだ不具合あり.[start] #slacker.pins.add(channel='チャンネルID',timestamp=str(time.time()), file_=result.body['file']['id']) slacker.pins.add(channel='チャンネルID',timestamp=str(time.time())) # まだ不具合あり.[End]
★問題 1件
slacker.pins.add に失敗する... こちらについては、解決次第再投稿させていただきます。
※参考 https://nn-hokuson.hatenablog.com/entry/2017/10/11/205438