小编Pat*_*oos的帖子

ListView:带LinkMovementMethod的TextView使列表项无法点击?

我想做什么:包含这样的消息的列表:

<UserName>,这是用户编写的mnessage,它将很好地包装到下一行.完全是这样的.

是)我有的:

ListView R.layout.list_item:

<TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text_message"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="(Message Text)" />
Run Code Online (Sandbox Code Playgroud)

膨胀以上布局的适配器并执行:

SpannableStringBuilder f = new SpannableStringBuilder(check.getContent());
f.append(username);
f.setSpan(new InternalURLSpan(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(context, "Clicked User", Toast.LENGTH_SHORT).show();
    }
}), f.length() - username.length(), f.length(),
        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

f.append(" " + message);

messageTextView.setText(f);
messageTextView.setMovementMethod(LinkMovementMethod.getInstance());
meesageTextView.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)

InternalURLSpan类

public class InternalURLSpan extends ClickableSpan {
    OnClickListener mListener;

    public InternalURLSpan(OnClickListener listener) {
        mListener = listener;
    }

    @Override
    public void onClick(View widget) {
        mListener.onClick(widget);
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds); …
Run Code Online (Sandbox Code Playgroud)

android

36
推荐指数
3
解决办法
2万
查看次数

将重叠的音频文件流式传输到Chromecast Audio

我想流式传输多个重叠的音频文件(某些随机时间播放的声音效果).所以一种生成的音频流永远不会以完全相同的方式重复.有些音频文件在循环播放,有些则在特定时间.我想可能有点实时的流插入.

编写这样的服务器软件的最佳方法是什么?应该使用哪些协议进行流式传输(我更喜欢使用HTTP).我可能想要为每个配置(声音效果的轨道和时间)公开一个url.

任何指向代码/库的指针?最好是在任何语言,如java/kotlin/go/rust/ruby​​/python/node/...

网址: https://server.org/audio?file1=loop&file2=every30s&file2_volume=0.5

响应:( Audio stream在演员设备上播放)

Stream循环file1.每30秒播放一次50%音量的file2(叠加在file1上,播放率为100%).文件1就像10m9s长.所以组合永远不会重复.所以我们不能只提供一个预生成的mp3文件.

一些背景

我目前有一个Android应用程序随机播放不同的音频文件.有些是循环,有些是每x秒播放一次.有时多达10个同时.

现在我想添加对chromecast/chromecast audio/google home/...的支持.我想最好的是拥有一个流式传输的服务器.每个用户在玩游戏时都会有他/她自己的流.不需要让多个用户收听同一个流(即使它也可能受支持).

服务器基本上会读取url,获取配置,然后使用音频流进行响应.服务器打开一个(或多个音频文件),然后将其组合/叠加到单个流中.在某些时候,这些音频文件是循环的.其他一些音频文件在特定时间打开并添加/重叠到流中.播放的每个音频文件以不同的音量级别播放(一些声音更大,一些声音更安静).问题是如何制作这样的音频流以及如何实时添加不同的文件.

https http audio-streaming google-cast

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

neo4j ExecutionResult:提取多个列(因为javaColumnAs只能运行一次)

我目前正在进行这样的cyper查询:

StringBuilderStringLogger logger = new StringBuilderStringLogger(new StringBuilder());
GraphDatabaseService neo4jDb = database.getDatabase();
ExecutionResult result = engine.execute("MATCH (n:Person{name:'Test'}) MATCH n-[r]->m RETURN n,r,m;");
Run Code Online (Sandbox Code Playgroud)

所以现在我想离开n,r和m.所以我尝试了以下内容:

Node node = IteratorUtil.single(result.javaColumnAs("n"));
Relationship relationship = IteratorUtil.single(result.javaColumnAs("r"));
Node otherNode = IteratorUtil.single(result.javaColumnAs("m"));
Run Code Online (Sandbox Code Playgroud)

现在这似乎不起作用.第一个请求始终有效,但第二个请求将返回一个空迭代器,因此对于关系或对象为null.原因是,ExecutionResul是一个懒惰的迭代器.所以如果你经历过一次(比如javaColumnAs,它会迭代它),那么你之后就无法获得任何东西了.我在哪里找到这个解释:https://groups.google.com/forum/#! searchin/neo4j / javacolumnAs/neo4j / oUP_2b8mAlY/Sp39sfYm9_4J

现在,如果我这样做,它可以正常工作.

Node node = null;
Relationship relationship = null;
Node otherNode = null;

for (Map<String, Object> row : IteratorUtil.asIterable(result.javaIterator())) {
    for (Map.Entry<String, Object> column : row.entrySet()) {

        switch (column.getKey()){
            case "n":
                node = (Node) column.getValue(); …
Run Code Online (Sandbox Code Playgroud)

java neo4j

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

标签 统计

android ×1

audio-streaming ×1

google-cast ×1

http ×1

https ×1

java ×1

neo4j ×1