小编Bah*_*man的帖子

同时通过2张不同的声卡播放2个音乐

尝试开箱即用的东西...我有一个简单的应用程序,按下按钮,按下时,播放我的Android平板电脑的音频插孔音乐.

public void btn1 (View view) {
    MediaPlayer mp = MediaPlayer.create(this, R.raw.xxx);
    mp.start();
}
Run Code Online (Sandbox Code Playgroud)

我现在已经添加了一个usb音频接口(通过micro usb适配器),我可以听到它的声音.

我能用这个列出声卡

AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);

for (AudioDeviceInfo device : devices) {
    int b = device.getId();
    int d = device.getType();
    CharSequence productName = device.getProductName();
}
Run Code Online (Sandbox Code Playgroud)

如何路由音乐以便我可以一次播放2种不同的音乐,一种通过USB播放,另一种通过耳机插孔播放?

java audio usb android soundcard

19
推荐指数
1
解决办法
315
查看次数

toArray 带有预大小的数组

使用ar.toArray(new String[ar.size()])Android studio 3.2.1 时会警告预先调整大小的数组并建议使用空数组

有两种样式可以将集合转换为数组:使用预先确定大小的数组(如 c.toArray(new String[c.size()]))或使用空数组(如 c.toArray(new String[ 0]). 在较旧的 Java 版本中,建议使用预先调整大小的数组,因为创建适当大小数组所必需的反射调用非常慢。但是,由于 OpenJDK 6 的后期更新,此调用被内在化,使得性能空数组版本与预先调整大小的版本相同,有时甚至更好。此外,传递预先调整大小的数组对于并发或同步集合是危险的,因为在 size 和 toArray 调用之间可能会发生数据竞争,这可能会导致额外的如果集合在操作期间同时收缩,则数组末尾为 null。此检查允许遵循统一样式:使用空数组(现代 Java 中推荐使用)或使用预先确定大小的数组(在较旧的 Java 版本或非基于 HotSpot 的 JVM 中可能更快)。

对于Android还是仅适用于Java?

使用预先确定大小的数组(在较旧的 Java 版本或非基于 HotSpot 的 JVM 中可能更快)。

因为我认为 Android 不是 HotSpot,它的虚拟机是 Dalvik,现在是 ART

java arrays android virtual-machine dalvik

13
推荐指数
2
解决办法
3527
查看次数

(imutable集合是可变的)在Kotlin中返回true

为什么在Kotlin发生这种情况:

val list: List<Int> = listOf(1, 2, 3)// Immutable list

if(list is MutableCollection<*>){// why this "if" condition is true?
    println("is mutable")// this line is printed
    (list as MutableCollection<Int>).add(4) // this results to java.lang.UnsupportedOperationException
}
Run Code Online (Sandbox Code Playgroud)

list is MutableCollection返回true,显示Kotlin不可变集合对象实现MutableCollection接口,但不是更改它抛出的集合中的项目UnsupportedOperationException

这是真的吗?如果是,为什么Immutable集合对象MutableCollection在Kotlin中实现接口?

是因为Kotlin集合继承自Java集合并且更改方法(添加,删除,...)已经存在并且避免更改集合的唯一方法是覆盖它并抛出异常(即使这是真的它不是Kotlin不可变集合对象实现MutableCollection接口所必需的,因为java改变集合方法已经存在并且可以被覆盖)?

kotlin immutable-collections

3
推荐指数
1
解决办法
86
查看次数

Sending SMS with Intent not working in Oreo 8.1 Google API emulator

I am using this code to send sms:

This code could be found in many tutorials but it is not working in Oreo, i have sent the correct answer

public void sendSms(String phone) {
        if(null != phone) {
            final Intent i = new Intent(Intent.ACTION_VIEW);
            i.setType("vnd.android-dir/mms-sms");//<-- maybe problem is here
            i.putExtra("address", phone);
            startActivity(Intent.createChooser(i, getString(R.string.sms)));
        }
    }
Run Code Online (Sandbox Code Playgroud)

I have tested this code in Android 4 to Android 6 and no problem but in Android 8.1 google api emulator says no app can …

sms android android-intent

0
推荐指数
1
解决办法
1779
查看次数