https://android-developers.googleblog.com/2019/07/capturing-audio-in-android-q.html
Not many devices are on android 10 though.
AudioSource.REMOTE_SUBMIX
| mWebView.setWebViewClient(new WebViewClient() { | |
| @Override | |
| public WebResourceResponse shouldInterceptRequest(WebView view, String url) { | |
| if (url.contains("creditcard_cvc.jpg")) { | |
| Log.v("WebView", "Replacing [" + url + "] with [R.raw.tmp_replacement]"); | |
| ContentResolver contentResolver = getActivity().getContentResolver(); | |
| return new WebResourceResponse(contentResolver.getType(Uri.parse(url)), "UTF-8", getResources().openRawResource(R.raw.tmp_replacement)); | |
| } | |
| return super.shouldInterceptRequest(view, url); |
| // white-noise-processor.js | |
| class WhiteNoiseProcessor extends AudioWorkletProcessor { | |
| process (inputs, outputs, parameters) { | |
| const output = outputs[0] | |
| output.forEach(channel => { | |
| for (let i = 0; i < channel.length; i++) { | |
| channel[i] = Math.random() * 2 - 1 | |
| } | |
| }) | |
| return true |
| 1582965337.994 I/zygote64: Late-enabling -Xcheck:jni | |
| 1582965338.055 I/zygote64: Debugger is no longer active | |
| 1582965338.116 I/libthemeutils: Theme: libthemeutil.so load success | |
| 1582965338.156 W/com.facebook.UserSettingsManager: The value for AdvertiserIDCollectionEnabled is currently set to FALSE so you're sending app events without collecting Advertiser ID. This can affect the quality of your advertising and analytics results. | |
| 1582965338.192 D/NetworkSecurityConfig: No Network Security Config specified, using platform default | |
| 1582965338.240 D/AccessibilityManager: AccessibilityManager status: mPackageName = com.gamingforgood.clashofstreamers, mOptimizeEnabled = false, mIsEnabled = false, mIsUiAutomationEnabled = false, mIsInterestedPackage =false | |
| 1582965338.258 D/Unity: CommandLine: | |
| 1582965338.402 I/Unity: onResume | |
| 1582965338.496 D/Unity: SetWindow 0 0x7cc8779010 | |
| 1582965338.496 D/Unity: SetWindow 0 0x7cc8779010 |
| val sampleRate = 48000 | |
| val channelConfig = AudioFormat.CHANNEL_IN_MONO | |
| val pcm16 = AudioFormat.ENCODING_PCM_16BIT | |
| val pcmBufSize = AudioRecord.getMinBufferSize( | |
| sampleRate, | |
| channelConfig, | |
| pcm16 | |
| ) * 5 | |
https://android-developers.googleblog.com/2019/07/capturing-audio-in-android-q.html
Not many devices are on android 10 though.
AudioSource.REMOTE_SUBMIX
| 2020-01-12 08:50:42.820 2033-4155/com.bluestacks.BstCommandProcessor D/BstCommandProcessor-httpd: command: runex com.bluestacks.settings/.SettingsActivity | |
| 2020-01-12 08:50:42.824 2033-4155/com.bluestacks.BstCommandProcessor D/BstCommandProcessor-Application: in isSystemReady, isBootCompleted true External storage status: mounted External storage dir :/storage/emulated/0 isExternalStorageRemovable:false | |
| 2020-01-12 08:50:42.824 2033-4155/com.bluestacks.BstCommandProcessor D/BstCommandProcessor-Application: returning from waitForSystemReady, isSystemReady = true | |
| 2020-01-12 08:50:42.824 2033-4155/com.bluestacks.BstCommandProcessor D/BstCommandProcessor-CommandHandler: gamemanager compatible mode | |
| 2020-01-12 08:50:42.825 2033-4155/com.bluestacks.BstCommandProcessor D/BstCommandProcessor-CommandHandler: recentTask.size(): 8 | |
| --------- beginning of system | |
| 2020-01-12 08:50:42.825 1716-2378/system_process I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0 |
| [06:04:37] IOS | |
| [06:04:37] ------------------------------------------------------------------------------- | |
| [06:04:37] Build Report | |
| [06:04:37] Uncompressed usage by category (Percentages based on user generated assets only): | |
| [06:04:37] Textures 470.4 mb 55.2% | |
| [06:04:37] Meshes 8.9 mb 1.0% | |
| [06:04:37] Animations 51.5 mb 6.0% | |
| [06:04:37] Sounds 23.2 mb 2.7% | |
| [06:04:37] Shaders 1.8 mb 0.2% | |
| [06:04:37] Other Assets 204.3 mb 24.0% |
| public class OneSignalClient : MonoBehaviour { | |
| void Start() { | |
| InitOneSignal(); | |
| } | |
| public void InitOneSignal() { | |
| OneSignal.SetLogLevel(OneSignal.LOG_LEVEL.VERBOSE, OneSignal.LOG_LEVEL.NONE); | |
| OneSignal.StartInit(ClientConfig.oneSignalAppId) |
This is all the logs from starting the iOS app until the native prompt appeared.
The device is an iPad 2018 9.7 inch with iOS 12.1.4 (16D57).
default 14:41:01.585096 +0100 clashofstreamers UnityIAP: Requesting 45 products
default 14:41:01.585434 +0100 clashofstreamers [com.gamingforgood.clashofstreamers] Getting pending notification requests (sync)
default 14:41:01.587509 +0100 clashofstreamers [com.gamingforgood.clashofstreamers] Got 0 pending notification
default 14:41:01.589342 +0100 clashofstreamers [com.gamingforgood.clashofstreamers] Getting pending notification requests (sync)
| public unsafe void OnAudioDataCallback(IntPtr _, char id1, char id2, short* pcmFrames, int frameCount, int frameRateHz, int channels, int isSilence) { | |
| // ignore silent samples | |
| if (isSilence == 1) return; | |
| if (channels != 2) { | |
| Debug.LogWarning("unexpected number of channels " + channels); | |
| return; | |
| } | |
| sampleBytes = new byte[frameCount * 2 * channels]; // each channel has a frame of 2 bytes | |
| /* |