小编bea*_*ear的帖子

onOptionsItemSelected未调用

我的操作栏中有一个菜单项列表.每个项目单击应触发不同的方法.但是从不调用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

5
推荐指数
1
解决办法
1万
查看次数

Android Bluemix没有显示扬声器标签

我正在使用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)

android speech-to-text ibm-watson ibm-cloud

5
推荐指数
1
解决办法
155
查看次数

隐藏嵌入的 aframe 场景

我想以编程方式隐藏和显示我嵌入的 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)

使其可见的唯一方法是调整浏览器窗口的大小,然后似乎调整画布的大小。

有没有更好的方法可以毫不拖延地隐藏场景?

javascript webvr aframe

5
推荐指数
1
解决办法
644
查看次数

ReactJS 中浏览器后退按钮的反转状态

为了获得一致的用户体验,我希望我的 React 应用程序在用户单击浏览器后退按钮时反转其状态。

例如,如果我通过函数调用更改状态中的元素:

  changeVar = (idx) => (event) => {
    this.setState({thisIndex: idx});
    //how to notify browser stack of this change?
  }
Run Code Online (Sandbox Code Playgroud)

如何将其添加到浏览器堆栈中,以便用户可以单击浏览器中的后退按钮来反转状态更改?

javascript reactjs

5
推荐指数
1
解决办法
5593
查看次数

在插入耳机的情况下通过扬声器播放音频

我想通过插入耳机的扬声器播放音频文件。

我尝试了以下操作: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

有什么想法如何解决这个问题吗?

audio android android-mediaplayer

2
推荐指数
1
解决办法
2838
查看次数

缩放Aframe模型

从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

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

获取相机位置javascript

我想在我的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,即使使用键盘输入在相机位置移动时也是如此.如何连续拍摄相机位置?

javascript webvr aframe

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