我想做什么:包含这样的消息的列表:
<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) 我想流式传输多个重叠的音频文件(某些随机时间播放的声音效果).所以一种生成的音频流永远不会以完全相同的方式重复.有些音频文件在循环播放,有些则在特定时间.我想可能有点实时的流插入.
编写这样的服务器软件的最佳方法是什么?应该使用哪些协议进行流式传输(我更喜欢使用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,获取配置,然后使用音频流进行响应.服务器打开一个(或多个音频文件),然后将其组合/叠加到单个流中.在某些时候,这些音频文件是循环的.其他一些音频文件在特定时间打开并添加/重叠到流中.播放的每个音频文件以不同的音量级别播放(一些声音更大,一些声音更安静).问题是如何制作这样的音频流以及如何实时添加不同的文件.
我目前正在进行这样的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)