小编And*_*oke的帖子

TCP侦听器和套接字之间的区别

据我所知,我可以使用TCPListener和Socket创建一个服务器,那么它们之间的区别是什么?

插座

private Socket MainSock;
MainSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
MainSock.Bind(new IPEndPoint(IPAddress.Any, port));
MainSock.Listen(500);
MainSock.BeginAccept(AcceptConnections, new Wrapper());
Run Code Online (Sandbox Code Playgroud)

的TCPListener

    Int32 port = 13000;
    IPAddress localAddr = IPAddress.Parse("127.0.0.1");
    TcpListener server = new TcpListener(localAddr, port);
    server.Start();
Run Code Online (Sandbox Code Playgroud)

我真的很困惑.他们俩听取了联系,那么它们之间的区别是什么?

更新的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
using System.IO;

public class Wrapper
{
    public byte[] buffer;
    public SslStream sslStream;
    public object connector;
}

public class Sock
{
    private Dictionary<string, byte> Connections; …
Run Code Online (Sandbox Code Playgroud)

sockets client tcp tcplistener serversocket

30
推荐指数
3
解决办法
4万
查看次数

Android Wear上的SpeechRecognizer

我目前正在开发的应用程序需要对单个单词进行简单的语音识别.但是,我不想使用:

startActivityForResult()使用ACTION_RECOGNIZE_SPEECH

因为我需要在用户说话时显示其他内容.所以我尝试了这个:

speechRecognizer = SpeechRecognizer.createSpeechRecognizer(context);
speechRecognizer.setRecognitionListener(this);        
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE,"en");
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
speechRecognizer.startListening(intent);
Run Code Online (Sandbox Code Playgroud)

这应该使我能够得到结果,但我总是得到:

没有选定的语音识别服务

此代码也返回false:

boolean speechEnabled = SpeechRecognizer.isRecognitionAvailable(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

所以我认为到目前为止仅仅使用SpeechRecognizerwith startListening对Android Wear不起作用...有关如何在不显示任何特定UI的情况下实现语音识别的任何建议?

编辑:我想这与谷歌语音搜索没有安装在设备上有关,但手动安装它不是真正的选择.

android speech-recognition speech-to-text wear-os

13
推荐指数
0
解决办法
932
查看次数

MediaMetadataCompat METADATA_KEY_ART仅在第一次设置图像

在我的应用程序中,我正在利用MediaSessionCompat媒体播放器服务播放音频.特别是,我想将当前歌曲的元数据广播到蓝牙设备(可以工作),并将锁定屏幕图像设置为当前歌曲的专辑封面.

与此问题类似:在Android中设置锁定屏幕背景(如Spotify do)

每次换歌,我先理清当前MediaMetadataCompatPlaybackStateCompatMediaSessionCompat像这样:

mSession.setActive(false);
mSession.setMetadata(null);
mSession.setPlaybackState(null);
Run Code Online (Sandbox Code Playgroud)

然后,我使用各自的构建器创建这些类的新实例

MediaMetadataCompat metadata = new MediaMetadataCompat.Builder()
        .putString(MediaMetadataCompat.METADATA_KEY_TITLE,
                                songName)
        .putString(MediaMetadataCompat.METADATA_KEY_ARTIST,
                                artistName)
        .putString(MediaMetadataCompat.METADATA_KEY_ALBUM,
                                albumName)
        .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, durationMs)
        .putBitmap(MediaMetadataCompat.METADATA_KEY_ART, bitmap)
        .build();

PlaybackStateCompat state = new PlaybackStateCompat.Builder()
        .setActions(PlaybackStateCompat.ACTION_PLAY | PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PAUSE |
                                    PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS)
        .setState(PlaybackStateCompat.STATE_PLAYING, positionMs, 1.0f, SystemClock.elapsedRealtime())
        .build();
Run Code Online (Sandbox Code Playgroud)

然后我在上面设置新的元数据 MediaSessionCompat

mSession.setActive(true);
mSession.setMetadata(metadata);
mSession.setPlaybackState(state);
Run Code Online (Sandbox Code Playgroud)

在我的蓝牙设备上,元数据工作正常,并且每次歌曲更改时都会更改.然而,在我的手机上,锁屏专辑封面仅在第一次更新.我已经确认我设置的位图是新的,但图像不会改变.

我还在服务中创建媒体样式通知,以允许用户通过持久通知和锁定屏幕控制音乐.

NotificationCompat.MediaStyle style = new NotificationCompat.MediaStyle();
style.setShowActionsInCompactView(0, 1, 2, 3, 4);

Intent intent = new Intent(this, DestinationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent pendingIntent …
Run Code Online (Sandbox Code Playgroud)

android android-mediasession

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

Android Studio中某些设备没有Logcat输出

我意识到这个问题基本上是无限次提出的,但是我一直没有找到适合我的情况的解决方案。

我正在使用Android Studio 1.5,在运行Android 4.2.2的LG-MS770上进行调试。

我测试过的其他设备均具有良好的功能(HTC One M8,Samsung Galaxy S5,Note 4,多个其他设备以及众多虚拟设备配置),但是这款手机产生的Logcat输出绝对为零。我的应用程序没有任何内容,设备上也没有任何其他进程正在运行。如果相关的话,Android Monitor中的其他度量(网络,内存,CPU,GPU)都可以正常输出。

我确保已通过USB启用调试。(我可以遍历断点,但Log.d("TAG","log")什么也没显示。

我还尝试了此问题的常规修复方法:重新启动logcat,确保正确设置了过滤器,运行adb kill-serveradb start-server,断开并重新连接设备,重新启动Android Studio和我的PC,但都无济于事。

有谁知道其他解决方案吗?或特定于此设备的东西?

谢谢!

编辑:

该设备已植根,并具有基于CyanogenMod 11 的自定义rom

adb logcat -d 打印以下内容:

reloc_library[1331]: 20370 cannot locate 'android_log_setColoredOutput'... CANNOT LINK EXECUTABLE

这与自定义ROM有关吗?

android logcat android-studio

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

Android Runtime.getRuntime().exec("su")java.io.IOException:权限被拒绝

当我使用这段代码时:

process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
Run Code Online (Sandbox Code Playgroud)

总有一个错误,任何想法?在Android虚拟设备上运行

W/System.err(3211): java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null
W/System.err(3211):     at java.lang.ProcessManager.exec(ProcessManager.java:211)
W/System.err(3211):     at java.lang.Runtime.exec(Runtime.java:174)
W/System.err(3211):     at java.lang.Runtime.exec(Runtime.java:247)
W/System.err(3211):     at java.lang.Runtime.exec(Runtime.java:190)
W/System.err(3211):     at com.example.executeandroidtest.ShellUtils.execCommand(MainActivity.java:661)
W/System.err(3211):     at com.example.executeandroidtest.MainActivity$3.run(MainActivity.java:410)
W/System.err(3211):     at java.lang.Thread.run(Thread.java:818)
W/System.err(3211): Caused by: java.io.IOException: Permission denied
W/System.err(3211):     at java.lang.ProcessManager.exec(Native Method)
W/System.err(3211):     at java.lang.ProcessManager.exec(ProcessManager.java:209)
W/System.err(3211):     ... 6 more
Run Code Online (Sandbox Code Playgroud)

android exception

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

Android应用程序崩溃按钮单击

我一直试图在Eclipse中制作我的第一个Android应用程序(一个简单的温度转换器),但是当我点击手机上的按钮时,应用程序崩溃了.这是完整的Java代码

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
String number;
int number2;
int output;
boolean F;
public void onBtnClicked(View view){

    EditText mEdit = (EditText)findViewById(R.id.editText1);
    TextView myTextView = (TextView) findViewById(R.id.label);

number = mEdit.getText().toString();
number2 = Integer.parseInt(number);

if(F=true){
output=number2*9/5+32;
}
else{
output=number2-32*5/9;
}

myTextView.setText(output);
} …
Run Code Online (Sandbox Code Playgroud)

java crash android button

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