String operator"" s(const char* str, std::size_t length) { return String(str); } int operator"" km(unsigned long long x) { return static_cast<int>(x) * 1000; }
System256でキン肉マンマッスルグランプリ2(1だと不可)を起動して 「SYSTEM256 MODE SETTING ERROR」と表示されているときに ボタン 123 123 4321232 123 123 4321231 START の順番に押すと起動できる。 3ボタンの筐体が多くてできないかもだけど… System256だとCPUは1.33倍になって処理落ちが減ってRAMが多いからキャッシュが効く。 System256の246モードだとキャッシュが効くんだったかなぁ…? もう昔過ぎて忘れた…
HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args) の引数の型を↓に変更 HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
import { app } from "electron"; app.commandLine.appendSwitch('js-flags', '--max-old-space-size=4096'); // readyよりも前に実行する app.on('ready', () => { // ... });
GPIO18をonにする \\batocera\share\system\custom.sh #!/bin/bash gpio_number=18 echo "${gpio_number}" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio${gpio_number}/direction echo "1" > /sys/class/gpio/gpio${gpio_number}/value
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); stopWatch.Stop(); Debug.Log("time " + stopWatch.Elapsed);
■TiledTmxImporter.csのCreateMapPrefab関数修正 PrefabUtility.CreatePrefab(path, game_object); Editor.DestroyImmediate(game_object); ↓ var prefab = PrefabUtility.SaveAsPrefabAsset(game_object, path); PrefabUtility.UnpackPrefabInstance(game_object, PrefabUnpackMode.OutermostRoot, InteractionMode.AutomatedAction); Editor.DestroyImmediate(game_object); AssetDatabase.SaveAssets();
[Unity]アンドロイドでバックボタンを押した時の処理 // プラットフォームがアンドロイドかチェック if (Application.platform == RuntimePlatform.Android) { if (Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); return; } }
OpenVRとOpenGLの座標系は同じっぽい (y+) 奥(z-) ↑ / | / | / |/ (x-)-----+----→(x+) /| / | / | ↙ | 手前(z+) (y-)
// aとbが同じだったらtrue (a == bのfloat版) #define _USE_MATH_DEFINES #include <math.h> bool approximatelyf(float a, float b) { if(fabs(a - b) <= DBL_EPSILON * fmaxf(1.0f, fmaxf(fabs(a), fabs(b)))) { return true; } return false; }
■プロジェクトに外部モジュール追加 libdms, dms, lpng, ssalib, libogg, libvorbisを追加した場合。libvorbisはliboggを参照しているのでliboggの下に追加。 ・settings.gradle include ':app', ':libdms', ':dms', ':lpng', ':ssalib', ':libogg', ':libvorbis' project(':libdms').projectDir = new File(settingsDir, '../../../libDms/project/androidstudio/libdms') project(':dms').projectDir = new File(settingsDir, '../../../libDms/project/androidstudio/dms') project(':lpng').projectDir = new File(settingsDir, '../../../lpng/project/androidstudio/lpng') project(':ssalib').projectDir = new File(settingsDir, '../../../ssalib/project/androidstudio/ssalib') project(':libogg').projectDir = new File(settingsDir, '../../../libogg/project/androidstudio/ogg') project(':libvorbis').projectDir = new File(settingsDir, '../../../libvorbis/project/androidstudio/vorbis') ・app\build.gradle dependencies { implementation project(path: ':libdms') implementation project(path: ':dms') implementation project(path: ':lpng') implementation project(path: ':ssalib') implementation project(path: ':libogg') implementation project(path: ':libvorbis') } ■プロジェクトに.a追加 ・app\src\main\cpp\CMakeLists.txt set(LIB_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../libDms/project/androidstudio) add_library(Dms STATIC IMPORTED) set_target_properties(Dms PROPERTIES IMPORTED_LOCATION ${LIB_ROOT}/lib/${ANDROID_ABI}/libDms.a) ■AdMob (Google Play Services) ・AndroidManifest.xmlに<meta-data>追加 <manifest> <application> <meta-data android:name="com.google.android.gms.ads.AD_MANAGER_APP" android:value="true"/> </application> </manifest> ・app\build.gradleにライブラリ追加 dependencies { implementation 'com.google.android.gms:play-services-ads:18.0.0' } ■タイトルバーを消す ・app\src\main\res\values\styles.xml <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowNoTitle">true</item> ← 追加 ■画面の向きを変更した場合の再起動を回避 <manifest <application <activity android:configChanges="orientation|screenSize" ← 追加 android:screenOrientation="portrait"> ← 追加(portrait、landscapeなど) ■assetsフォルダ追加 AndroidStudioの[File]-[New]-[Folder]-[Assets Folder]を選択する。 任意のフォルダを追加することができる。
■aarファイルの作成 (1) AndroidStudioを起動する (2) 「Start a new Android Studio Project」を選ぶ (3) 「Add No Activity」を選んで「Next」ボタンを押す (4) Nameを入力してPackage nameとSave locationを確認して「Finish」ボタンを押す (5) プロジェクトが作成されるのを待つ (6) 「File」-「New」-「New Module...」を選択する (7) 「Android Library」を選んで「Next」ボタンを押す (8) Application/Library nameを入力してModule nameとMinimum SDKを確認して「Finish」ボタンを押す (9) 「****\src\main」フォルダに「cpp」フォルダを作成する (10) cppフォルダに「CMakeLists.txt」ファイルを作成する。 例) cmake_minimum_required(VERSION 3.4.1) add_library( ssalib SHARED ../../../../../../source/ssadata.cpp ../../../../../../source/ssalib.cpp ../../../../../../source/ssaload.cpp ) target_link_libraries( ssalib Android Log ) (11) 左のProject一覧のModule名を右クリックして「Link C++ Project with Gradle」を選ぶ (12) Build Systemに「CMake」を選びProject Pathに上で作成した「CMakeLists.txt」を選択して「OK」ボタンを押す (13) 「Build」-「Rebuild Project」を選ぶと「build\outputs\aar」にaarファイルが作成される
https://developer.android.com/google/play/billing/billing_library_releases_notes#release-2_0 > 3日以内に購入を承認しない場合、ユーザーは自動的に払い戻しを受け、Google Playは購入を取り消します つまり、課金しっぱなしでアイテムを付与しなかった場合、自動的に払い戻されるということらしい
・円アイコン、アダプティブアイコンの設定 AndroidStudio3.3で「Empty Activity選択」-「Next」-「Finish」プロジェクト作る ・円アイコンにPNGを設定する (1)app/src/main/res/の各mipmapフォルダにあるic_launcher_round.pngアイコンを更新する。 PNG画像のサイズは48x48、72x72、96x96、144x144、192x192。 (2)アイコンを更新するだけなら(1)だけで良いがファイル名を変える場合は app/src/main/AndroidManifest.xmlを書き換える。 <application android:roundIcon="@mipmap/(アイコンPNG名)" ・アダプティブアイコンにPNGを設定する (1)app/src/main/res/drawable/ic_launcher_background.xmlを削除する。 (2)app/src/main/res/drawable-v24/ic_launcher_foreground.xmlを削除する。 (3)app/src/main/res/の各mipmapフォルダにアイコンを追加する。 PNG画像のサイズは108x108、162x162、216x216、324x324、432x432。 512x512の画像を1024x1024位にして余白をつけると丁度になる。 アイコン用のic_launcher_foreground.pngを追加する。 mdpi,48x48,108x108 hdpi,72x72,162x162 xhdpi,96x96,216x216 xxhdpi,144x144,324x324 xxxhdpi,192x192,432x432 各サイズのic_launcher.pngは古い端末用に残す。 (4)app/src/main/res/values/colors.xmlを修正する。 <resources>タグの後に <color name="ic_launcher_background">#FFFF00</color>を追加する。 (5)app/src/main/res/mipmap-anydpi-v26/ic_launcher.xmlを修正する。 <background android:drawable="@drawable/ic_launcher_background" /> <foreground android:drawable="@drawable/ic_launcher_foreground" /> ↓以下のように修正する。 <background android:drawable="@color/ic_background" /> <foreground android:drawable="@mipmap/ic_launcher_foreground" /> (6)app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xmlを修正する。 <background android:drawable="@drawable/ic_launcher_background" /> <foreground android:drawable="@drawable/ic_launcher_foreground" /> ↓以下のように修正する。 <background android:drawable="@color/ic_background" /> <foreground android:drawable="@mipmap/ic_launcher_foreground" />
・アダプティブアイコンと円アイコンの設定の消し方 AndroidStudio3.3で「Empty Activity選択」-「Next」-「Finish」プロジェクト作る (1)app/src/main/res/の各mipmapフォルダからic_launcher_round.pngを削除する。 (2)app/src/main/AndroidManifest.xmlを編集して android:roundIcon="@mipmap/ic_launcher_round" ← この行を消して保存する。 (3)app/src/main/res/drawable/ic_launcher_background.xmlを削除する。 (4)app/src/main/res/drawable-v24/ic_launcher_foreground.xmlを削除する。 (5)app/src/main/res/mipmap-anydpi-v26/ic_launcher.xmlを削除する。 (6)app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xmlを削除する。
Play Billing LibraryのCodeLabをなぞってみた
https://www.masaibar.com/entry/play_billing_library_codelab
Play Billing Library 和訳
https://qiita.com/oya-t/items/a11f27d093963496018d
Play Billing Libraryが超絶かんたんだった件
http://hatesatekite.hatenablog.com/entry/2018/08/07/145422
Play Billing Library 1.0 がリリースされました
http://y-anz-m.blogspot.com/2017/09/
課金をAIDLからBilling Libraryに変更した話
https://blog.choilabo.com/20181028/967
Androidのアプリ内購入を簡単実装
https://qiita.com/watanaby0/items/deb60166753533fb00b1
https://www.sakura.ne.jp/function/freessl.html これってサクラでドメイン取得したら利用できるよってことみたいですね! で、Let's Encrypt自体はさくらとは関係ない別サービスですね さくらだとLet's Encryptで取得したSSLを簡単に設定できますよ~ってだけみたいです さくらのお試し期間ってクレカで払った場合のみでした。。。クレカ払いだとすぐサーバ用意されるみたいです。。。
https://ssl.sakura.ad.jp/ これの「詳しく見る」でブラウザのURLバーのとこの表示の違いみれますよ! さくらのSSL年間972円ですよw
iPhoneでWKWebView ・httpアクセス https://qiita.com/aminosan000/items/ae2e9de0e910af42304d ・Objective-C https://i-app-tec.com/objective-c/webview.html ・Swift https://developer.apple.com/documentation/webkit/wkwebview ・SwiftとJavaScriptと相互通信 https://qiita.com/usayuki/items/6979d0d6f7d8f5b302ad ・WKWebViewにおけるSwiftとJavaScriptにおける双方向通信 https://qiita.com/mss634/items/170d3cb401eee4ec1253 上記すべてWebkit.frameworkが必要
sshでwindowsに接続 1)PoserShellを管理者権限で起動 2)opensshのインストール choco install win32-openssh -params '"/SSHServerFeature /KeyBasedAuthenticationFeature"' -confirm インストールが終わったら、インストール先に移動 cd "C:\Program Files\OpenSSH-Win64" cp sshd_config_default sshd_config notepad sshd_config 9行目の#Port 22の#を消す 3)sshdのインストール powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 「sshd and ssh-agent services successfully installed」と表示されたら完了 4)サービスの起動 net start sshd
(1) Chrome起動 (2) F12を押してデベロップモードにする (3) アンドロイドをPCに接続する (4) ・・・ボタンを押してMore toolsを選んでRemote devidesを選ぶ (5) Enter URLにURLを入れる (6) Inspectボタンを押す
機種判別(C/C++) #if defined(_WIN32) // Windows #elif defined(__ANDROID__) // Android #elif defined(__APPLE__) // iPhone & MacOSX #elif defined(ARDUINO_SAMD_ZERO) && defined(INTERNAL32K) // TinyArcade #elif defined(ARDUINO_SAMD_ZERO) // GamebuinoMETA #else // その他 #endif
アンドロイドOSのビット数取得(Java) public int GetOsBit() { String os = System.getProperty("sun.arch.data.model"); if((os != null) && ((os = os.trim()).length() > 0)) { if("32".equals(os)) { return 32; } else if("64".equals(os)) { return 64; } } os = System.getProperty("os.arch"); if((os == null) || ((os = os.trim()).length() <= 0)) { return -1; } if(os.endsWith("86")) { return 32; } else if(os.endsWith("64")) { return 64; } return 32; }