尝试开箱即用的东西...我有一个简单的应用程序,按下按钮,按下时,播放我的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播放,另一种通过耳机插孔播放?
使用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
为什么在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改变集合方法已经存在并且可以被覆盖)?
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 …