我的操作栏中有一个菜单项列表.每个项目单击应触发不同的方法.但是从不调用onOptionsItemSelected.
这是在MainActivity中定义操作栏的方式:
public class MainActivity extends AppCompatActivity {
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings_1) {
//do something
return true;
} else if (id == R.id.action_settings_2) {
//do something
return true;
} else if (id == R.id.action_settings_1) {
//do something
return true;
}
return super.onOptionsItemSelected(item);
}
...
}
Run Code Online (Sandbox Code Playgroud)
这是操作栏菜单布局menu_main:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.MainActivity">
<item
android:id="@+id/action_settings_1"
android:orderInCategory="1"
android:title="Item 1"
app:showAsAction="never" /> …
Run Code Online (Sandbox Code Playgroud) android android-appcompat android-actionbar appcompatactivity
我正在使用IBM bluemix来转录一些音频,我想使用API说话人识别.
我设置了这样的识别器:
private RecognizeOptions getRecognizeOptions() {
return new RecognizeOptions.Builder()
.continuous(true)
.contentType(ContentType.OPUS.toString())
//.model("en-US")
.model("en-US_BroadbandModel")
.timestamps(true)
.smartFormatting(true)
.interimResults(true)
.speakerLabels(true)
.build();
}
Run Code Online (Sandbox Code Playgroud)
但返回的JSON不包括扬声器标签.如何使用bluemix java API返回扬声器标签?
Android中的我的录音机看起来像这样:
private void recordMessage() {
//mic.setEnabled(false);
speechService = new SpeechToText();
speechService.setUsernameAndPassword("usr", "pwd");
if(listening != true) {
capture = new MicrophoneInputStream(true);
new Thread(new Runnable() {
@Override public void run() {
try {
speechService.recognizeUsingWebSocket(capture, getRecognizeOptions(), new MicrophoneRecognizeDelegate());
} catch (Exception e) {
showError(e);
}
}
}).start();
Log.v("TAG",getRecognizeOptions().toString());
listening = true;
Toast.makeText(MainActivity.this,"Listening....Click to Stop", Toast.LENGTH_LONG).show();
} else {
try { …
Run Code Online (Sandbox Code Playgroud) 我想以编程方式隐藏和显示我嵌入的 aframe 场景。当网站加载时场景是隐藏的,但是我只能让它在这样的延迟下工作:
window.onload = function () {
setTimeout(function() { document.getElementById("scene-page").setAttribute("hidden", ""); }, 500);
}
Run Code Online (Sandbox Code Playgroud)
当我不添加此延迟时,即使再次将其设置为“可见”,场景仍然处于隐藏状态。具体来说,画布的大小似乎被调整为 0px:
<canvas class="a-canvas a-grab-cursor" data-aframe-canvas="true" width="0" height="0" style="width: 0px; height: 0px;"></canvas>
Run Code Online (Sandbox Code Playgroud)
使其可见的唯一方法是调整浏览器窗口的大小,然后似乎调整画布的大小。
有没有更好的方法可以毫不拖延地隐藏场景?
为了获得一致的用户体验,我希望我的 React 应用程序在用户单击浏览器后退按钮时反转其状态。
例如,如果我通过函数调用更改状态中的元素:
changeVar = (idx) => (event) => {
this.setState({thisIndex: idx});
//how to notify browser stack of this change?
}
Run Code Online (Sandbox Code Playgroud)
如何将其添加到浏览器堆栈中,以便用户可以单击浏览器中的后退按钮来反转状态更改?
我想通过插入耳机的扬声器播放音频文件。
我尝试了以下操作:MainActivity.java:
AudioManager audioManager = (AudioManager)mainActivity
.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.STREAM_MUSIC);
audioManager.setSpeakerphoneOn(true);
MediaPlayer mp = MediaPlayer.create(mainActivity, R.raw.chime);
mp.setAudioStreamType(AudioManager.STREAM_RING);
mp.start();
Run Code Online (Sandbox Code Playgroud)
显现:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)
但音频仍然通过插入的耳机播放。如何在插入耳机的情况下将音频输出正确定向到扬声器?
编辑1:
我尝试了 Android 帖子中的以下代码,插入耳机时如何将音频路由到扬声器?:
MediaPlayer mp = MediaPlayer.create(mainActivity, R.raw.chime);
AudioManager am = (AudioManager) mainActivity.getSystemService(mainActivity.AUDIO_SERVICE);
try {
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setLooping(true);
mp.prepare();
} catch (IllegalArgumentException | SecurityException| IllegalStateException | IOException e) {
Log.i("TAG","Error is " + e.toString());
e.printStackTrace();
}
am.requestAudioFocus(null, AudioManager.STREAM_ALARM,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
mp.start();
Run Code Online (Sandbox Code Playgroud)
但我越来越
java.lang.IllegalStateException
有什么想法如何解决这个问题吗?
从Aframe中的资产管理器加载对象时,模型显得太大,所以我想重新缩放它.
在Aframe网站上,声明如果您没有看到您的型号,请尝试将其缩小.与A-Frame的比例相比,OBJ模型通常具有极大的比例.
但是我怎么能这样做呢?我尝试使用与元素相同的深度/高度/宽度参数,但没有成功.
这是我的代码:
<html>
<head>
<script src="https://aframe.io/releases/0.3.2/aframe.min.js"></script>
</head>
<body>
<a-scene>
<a-assets>
<a-asset-item id="test-obj" src="test.obj"></a-asset-item>
<a-asset-item id="test-mtl" src="test.mtl"></a-asset-item>
</a-assets>
<a-obj-model src="#test-obj" mtl="#test-mtl" depth="2" height="0.5" width="0.5">
</a-obj-model>
</a-scene>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我想在我的Aframe应用程序中获取相机的位置,但它始终为0,尽管我移动相机.
我尝试了事件监听器和定期检索位置,但没有获得更新的值.
这是场景:
<a-scene>
<a-entity id="cameraWrapper" position="0 2 10" rotation="0 0 0">
<a-camera near="0.1" user-height="0" id="camera"></a-camera>
</a-entity>
<a-plane position="0 4 4" rotation="-90 0 -90" width="4" height="4" color="#7BC8A4"></a-plane>
<a-sky color="#ECECEC"></a-sky>
</a-scene>
Run Code Online (Sandbox Code Playgroud)
这是用于监控摄像机位置的javascript代码:
<script>
window.onload = function () {
var pos =
document.querySelector('#camera').getAttribute('position');
document.querySelector('[camera]').addEventListener('componentchanged', function (evt) {
console.log('CAMERA x/y:', pos.x, pos.y);
if (evt.name === 'position') {
console.log('Entity has moved from POSITION', evt.oldData, 'to', evt.newData, '!');
return;
}
return;
});
};
</script>
Run Code Online (Sandbox Code Playgroud)
但是条件if(evt.name ==='position')永远不会成立,并且相机位置保持为0,即使使用键盘输入在相机位置移动时也是如此.如何连续拍摄相机位置?