小编seb*_*123的帖子

Android 上两个应用程序之间的套接字通信

我的 Android 应用程序遇到了很大的问题,我想向您寻求帮助。

我目前正在使用套接字编写 Android Client-Server 应用程序。我在互联网上找到了很多教程,并从中为我的项目创建了基础知识。然而,所有教程都仅针对一条消息发送,仅此而已。我需要发送更多,所以我一直在尝试修改它。

这是负责服务器和客户端的代码片段。其余的此时并不重要。

服务器:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        serverStatus = (TextView) findViewById(R.id.server_status);
        recivedMsg = (TextView)findViewById(R.id.rec_msg);

        SERVERIP = getLocalIpAddress();

        Thread fst = new Thread(new ServerThread());
        fst.start();
    }

    public class ServerThread implements Runnable {

        public void run() {
            try {
                if (SERVERIP != null) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            serverStatus.setText("Listening on IP: " + SERVERIP);
                        }
                    });
                    serverSocket = new ServerSocket(SERVERPORT);
                    while (true) {
                        // listen for incoming clients …
Run Code Online (Sandbox Code Playgroud)

java sockets android chat

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

Android - 有没有可能制作无限画布?

目前我正在做允许用户画画的应用程序。简单的想,只要扩展 Canvas 类,大部分事情就完成了。

这是我最初的想法和想法。但是由于画布相当小,因为这只是用户在屏幕上看到的内容,因此没有太多可能的空间来绘制。通过文档,我找到了translate()允许我移动画布的方法。我确实发现当我移动它时,有一些空白区域,就像你移动一张纸一样。我知道这是完全正常的,正如我之前所说的 - 画布只是“屏幕”。

我的问题是 -有没有可能制作像无限画布这样的东西,这样你就可以制作一幅巨大的画作并移动所有东西?

在提出这个问题之前,我在想两件事如何做到这样的事情:

  1. 同时移动画布上的所有对象 - 坏主意,因为如果你有很多对象,那么移动速度会非常糟糕。

  2. 做一些类似的事情,ListView当你移动它(或者更好地在屏幕上看到)时,只将屏幕上的视图连同之前和之后的一个视图加载到内存中,其余的在需要时动态上传。我认为这是实现这一目标的最佳选择。

编辑:

Kai 给出的问题/答案告诉我,编辑我的问题以澄清一些事情是值得的。

关于用户可以做什么的基本假设:

  • 用户有机会仅绘制圆形和矩形,其中一些(大约 80%)在画布上具有可绘制(位图)。
  • 我假设在所有屏幕上最多会有 500-800 个矩形或圆形。

首先考虑无穷大,我想的是相当多的屏幕——每边至少有 30 个放大 1 倍的屏幕。我只需要给我的用户更大的自由。

在此屏幕上,一切都可以像在正常情况下一样进行 - 绘制、缩放 ( TouchListener, ScaleListener, DoubleTapListener)。在谈论缩放时,还有另一件事必须关注并与画布的“无限”相关联。当用户缩小时,屏幕或不可见“邻居”上的更精确的物体应该以适当的比例出现,就像您在现实生活中缩小相机一样。

我刚刚意识到的另一件事是在小缩放级别绘制的可能性 - 即在两个或三个屏幕上然后放大 - 我想它应该将其剪切并重新计算为较小的部分。

我想至少支持API 10 的设备,而不仅仅是高端.

关于时间的问题是最关键的。我希望一切都尽可能流畅,这样用户就不会知道每次都在创建新画布。

android android-canvas

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

使用Parcelable发送StringArray时发生NullPointerException

用parcelable对象发送意图时我遇到了奇怪的问题.这个对象有一个String数组.使用此答案如何使用Intents将对象从一个Android Activity发送到另一个?我首先将我的对象创建为parcelable,然后发送它.这是我的代码片段:

    public class MyObject implements Parcelable{

    private String _title = null;
    private String[] _genre;
    private int _time = 0;
    private String _disc = null;

    private static final String TAG = "MyObject";

    public MyObject (String title, String[] genre, int time, String disc) {
        _title = title;
        _genre = genre;
        _time = time;
        _disc = disc;
    }



    public MyObject(Parcel source) {
            /*
             * Reconstruct from the Parcel
             */
            Log.v(TAG, "ParcelData(Parcel source): time to put back parcel data");
            _title = …
Run Code Online (Sandbox Code Playgroud)

java android parcelable android-intent

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

在列上合并多个数据帧

我想合并/加入多个Dataframes,到目前为止我没有运气.我找到了merge方法,但它只适用于两个Dataframe.我也发现这个SO 答案建议做这样的事情:

df1.merge(df2,on='name').merge(df3,on='name')
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不适用于我的情况,因为我有20多个数据帧.

我的下一个想法是使用join.根据连接多个数据帧时的参考,我需要使用列表,只有我可以加入索引列.所以我更改了所有列的索引(好吧,它可以通过语法轻松完成)并最终得到如下内容:

df.join([df1,df2,df3])
Run Code Online (Sandbox Code Playgroud)

不幸的是,这种方法也失败了,因为其他列名在所有数据帧中都是相同的.我决定做最后一件事,那就是重命名所有列.但是当我最终加入所有内容时:df = pd.Dataframe()df.join([df1,df2,df3])

我收到了空数据框.我不知道,我怎么能加入他们.有人可以提出更多建议吗?

EDIT1:

样本输入:

import pandas as pd

df1 = pd.DataFrame(np.array([
    ['a', 5, 19],
    ['b', 14, 16],
    ['c', 4, 9]]),
    columns=['name', 'attr1', 'attr2'])
df2 = pd.DataFrame(np.array([
    ['a', 15, 49],
    ['b', 4, 36],
    ['c', 14, 9]]),
    columns=['name', 'attr1', 'attr2'])

df1 
  name attr1 attr2
0    a     5    19
1    b    14    16
2    c     4     9

df2
  name attr1 attr2
0    a    15    49
1    b     4 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

FMOD中的简单声音播放

我开始使用FMOD API,我有声音播放的问题.我使用过这个网站的教程:http://glasnost.itcarlow.ie/~powerk/audio/AddFMODtoaproject.html,只觉得我的声音很破解.

这是我在OpenGL初始化函数中使用的代码:

FMOD::System_Create(&system);// create an instance of the game engine
system->init(32, FMOD_INIT_NORMAL, 0);

system->createSound("sound.wav", FMOD_HARDWARE, 0, &sound1);
sound1->setMode(FMOD_LOOP_OFF);

system->playSound(FMOD_CHANNEL_FREE, sound1, false, 0);
Run Code Online (Sandbox Code Playgroud)

有谁知道什么是错的?或者也许还有另一种方式.

c++ audio fmod

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

在 OpenGL 中修改单个顶点位置

我现在在我使用的OpenGL从2转换我的代码中间glBegin()glVertex3f()到维也纳各组织的OpenGL 3.3和使用,EBOS。我阅读了许多教程,但我找不到一件非常重要的事情,我希望有人能够在这里帮助我。

在以前的版本中,多亏了glBegin(GL_POLYGON)和 4,glVertex3f(floa, float, float)我能够创建我想要的形状。或者更准确地说,用户想要 - 他可以只抓取一个顶点并修改基本矩形。所以有可能创建这样的东西:

以前的

现在我绘制基本矩形的代码如下所示:

box_vertices[] = {
            0.5f, 0.5f, 0.0f,
            0.5f, -0.5f, 0.0f,
            -0.5f, -0.5f, 0.0f,
            -0.5f, 0.5f, 0.0f
};

box_indices[] = {
            0, 1, 3,
            1, 2, 3
};

GLuint VAO, VBO, EBO;
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
glGenBuffers(1, &EBO);

glBindVertexArray(VAO);

glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(box_vertices), box_vertices, GL_STATIC_DRAW);

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(box_indices), box_indices, GL_STATIC_DRAW);

// Position attribute
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (GLvoid*)0);
glEnableVertexAttribArray(0);

glBindBuffer(GL_ARRAY_BUFFER, 0); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl

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

八叉树实现的速度问题

几天来,我一直在努力加快我的力导向图实现速度。到目前为止,我已经实现了 Barnes-Hut 算法,该算法使用八叉树来减少计算量。我已经对其进行了多次测试,与力相关的计算数量确实大大减少了。下面是没有 Barns-Hut(蓝线)和有(红线)的节点数量的计算图: 阴谋 尽管现在应该快很多,但事实是,就速度(时间)而言,升级只有百分之几。

我认为造成这种情况的原因之一可能是树的创建和树放置中的元素。因为元素不断移动,所以我需要在每个循环中重新创建树,直到达到某个停止条件。但是,如果我花费大量时间创建树,我就会失去在力计算增加方面获得的时间。至少我是这么想的。这就是我在主文件循环中添加元素的方式:

void AddTreeElements(Octree* tree, glm::vec3* boundries, Graph& graph)
{
    for(auto& node:graph.NodeVector())
    {
        node.parent_group = nullptr;
        if(node.pos[0] < boundries[1][0] && node.pos[0] > boundries[0][0] &&
                node.pos[1] > boundries[4][1] && node.pos[1] < boundries[1][1] &&
                node.pos[2] < boundries[0][2] && node.pos[2] > boundries[3][2])
        {
            tree->AddObject(&node.second);
            continue;
        }

        if(node.pos[0] < boundries[0][0])
        {
            boundries[0][0] = node.pos[0]-1.0f;
            boundries[3][0] = node.pos[0]-1.0f;
            boundries[4][0] = node.pos[0]-1.0f;
            boundries[7][0] = node.pos[0]-1.0f;
        }
        else if(node.pos[0] > boundries[1][0])
        {
            boundries[1][0] = node.pos[0]+1.0f;
            boundries[2][0] = node.pos[0]+1.0f;
            boundries[5][0] = node.pos[0]+1.0f;
            boundries[6][0] = …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm tree

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

计算不同长度向量中元素出现的总数

我有3个非常长(100K +元素)的不同产品名称的载体.每个向量具有不同的长度.我想要做的是计算每个产品有多少向量.所以像这样:

v1 = ['product1','product2','product3']
v2 = ['product3','product1','product5','product7','product10']
v3 = ['product1','product10']

'product1' 3
'product2' 1
'product3' 2
'product5' 1
'product7' 1
'product10' 2
Run Code Online (Sandbox Code Playgroud)

产品可以在向量内的任何顺序,在向量内,每个产品只出现一次.

我想在DataFrame这里使用pandas ,但所有列的长度必须相同.基于行的简单求和也不起作用,因为同一产品可能位于每列的不同行上.

有谁知道最好的方法是什么?我知道我可以做简单的暴力循环,但我不想,如果我可以使用numpy或pandas的东西.

python numpy pandas

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

巨大的列表<double>保存在小文件中

我试图在文件中保存一个巨大的双打列表.现在它看起来像这样:

try{
       FileStream fs = new FileStream(saveFileDialog.FileName, FileMode.OpenOrCreate);                   
       using(BinaryWriter binaryWriter = new BinaryWriter(fs))
       {
             foreach (double value in bigData)
             {
                  binaryWriter.Write(value);
             }
             binaryWriter.Close();
        }
        fs.Close();
} catch(System.IO.FileNotFoundException)
{
    MessageBox.Show("Unexpected save error\n", "Save error!", MessageBoxButtons.OK);
}
Run Code Online (Sandbox Code Playgroud)

bigData is a List<double> 在测试用例中,它包含2百万个对象.

保存的文件大约有15MB,我认为这对于二进制数据来说相当多.有谁有任何想法,我怎么能让它变得更小?

另外,请记住,我需要在保存后打开此文件 - 但这是在另一种方法中完成的.

c#

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

Android在屏幕旋转时复制片段

在我目前的应用程序中,我使用两个片段.它们的位置如下:

在纵向视图中

|F1|
|--|
|F2|
Run Code Online (Sandbox Code Playgroud)

在景观视图中:

|F2|F1|
Run Code Online (Sandbox Code Playgroud)

其中:F1是地图片段F2是列表片段

布局具有相同的名称,并放在两个文件夹中:layoutlayout-land.

我在活动onCreate()方法中设置我的片段:

private void displayFragment(int position) {
        Fragment fragment = null;
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();
        switch (position) {
        case MAIN_FRAGMNET:
            fragment = fragmentManager.findFragmentByTag(String
                    .valueOf(position));
            if (fragment == null) {
                fragment = new MainListFragment();
            }
            break;
        case MAP_FRAGMENT:
            fragment = fragmentManager.findFragmentByTag(String
                    .valueOf(position));
            if (fragment == null) {
                fragment = new EMapFragment();
            }
            break;
        default:
            break;
        }

        if (fragment != null) {
            if …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

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