小编Joh*_*own的帖子

Android编程 - 制作URI以获取音频位置

我是Java和Android编程的新手,所以对我来说有点奇怪!我主要来自C++/C#的背景,所以说技术!

无论如何.

我正在尝试创建一个简单的类来处理我正在设计的自定义音乐播放器的音频.我已经处理了所有的按键事件,所以现在我正在处理这个功能.

我正在使用MediaPlayer该类处理大部分硬件,但我对如何访问保存在用户移动设备上的音频感到困惑.

我一直在做一些研究,显然Android设备有一个内置的数据库,管理所有音频的位置,并访问这些数据,我必须使用Uri

如果有人可以发布一些如何使用a Uri访问它的代码示例,那么我相信我将能够在此基础上构建,然后将数据添加到我想要的任何容器中.

只是为了说清楚 - 用户不知道音乐位置目录,而我没有制作原始文件夹,我希望能够访问用户设备上保存的所有音乐,然后软件可以播放它.

或者,如果失败,一个很好的教程...我看了谷歌提供的文档,但没有任何示例代码,所以我真的不知道从哪里开始!

谢谢大家.

java android uri

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

C#控制台线程

我有一个程序,它使用控制台和GUI来完成我的程序的重要方面.我认为这两个部分都使用相同的线程.

问题是我正在使用带有输出的万用表,并且为了从它接收数据,程序发送命令来执行它 - 它使用SCPI,这些命令通过控制台运行.

问题是,每当我向万用表发送命令时,它会使程序无响应,直到它收到数据为止,我知道为什么,我也知道如何解决它,但我想知道是否有更好的方法.

目前我正在更改运行GUI的默认线程:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Thread applicationThread = new Thread(() => Application.Run(new Form1()));
    applicationThread.SetApartmentState(ApartmentState.STA);
    applicationThread.Start();
}
Run Code Online (Sandbox Code Playgroud)

当我向仪表发送命令时,这会阻止程序无响应,但我不能100%确定这是否会产生我还没有看到的任何其他问题?

我的问题是:

  • 有没有更好的方法来更改GUI运行的线程?
  • 如果没有,这种方法是否会产生我尚未看到的任何问题?
  • 我可以改变Console线程吗?

c# multithreading

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

从一个列表中随机创建两个列表

我正在使用 Pandas 从 CSV 文件中导入大量数据,一旦读取,我将其格式化为仅包含数字数据。然后返回列表中的列表。然后每个列表包含大约 140k 位的数据。numericalData[][].

从这个列表中,我希望创建TestingTraining Data. 对于我的测试数据,我希望有 30% 的读取数据numericalData,因此我使用以下代码;

testingAmount = len(numericalData0[0]) * trainingDataPercentage / 100
Run Code Online (Sandbox Code Playgroud)

很好用。然后,我使用 numpy 从导入的每一列中选择该数量的数据numericalData

testingData.append(np.random.choice(numericalData[x], testingAmount)  )      
Run Code Online (Sandbox Code Playgroud)

然后返回一个包含 38 列(循环运行)的样本,其中每列有大约 49k 个从我导入的numericalData.

问题是,我trainingData需要保留其他 70% 的数据,但我不确定如何做到这一点。我尝试比较 my 中的每个元素testingData,如果两个元素不相等,则将其添加到我的trainingData. 这导致了错误并且不起作用。接下来,我尝试testingData从导入的数据中删除选定的项,然后将该新列保存到我的trainingData,唉,这不起作用。

过去一周我只使用 python 工作,所以我对现在尝试什么有点迷茫。

python numpy pandas

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

SFML 2.0 循环相同的精灵

我正在使用 SFML 2.0 将入侵者精灵列表绘制到我的游戏中。目前,我必须不断复制并粘贴我的代码才能在以下位置绘制更多精灵:

//load the invaders images
sf::Texture invaders;
sf::Texture invaders2;
sf::Texture invaders3;
sf::Texture invaders4;
sf::Texture invaders5;
sf::Texture invaders6;
invaders.loadFromFile("images/invaders.png");
invaders2.loadFromFile("images/invaders.png");
invaders3.loadFromFile("images/invaders.png");
invaders4.loadFromFile("images/invaders.png");
invaders5.loadFromFile("images/invaders.png");
invaders6.loadFromFile("images/invaders.png");

//Sprites
sf::Sprite invadersSprite(invaders);
sf::Sprite invadersSprite2(invaders2);
sf::Sprite invadersSprite3(invaders3);
sf::Sprite invadersSprite4(invaders4);
sf::Sprite invadersSprite5(invaders5);
sf::Sprite invadersSprite6(invaders6);

invadersSprite2.setPosition(30,NULL);
invadersSprite3.setPosition(60,NULL);
invadersSprite4.setPosition(90,NULL);
invadersSprite5.setPosition(120,NULL);
invadersSprite6.setPosition(150,NULL);

if(Clock.getElapsedTime().asSeconds()>REFRESH_RATE)
        {

            //carry out updating tasks
            static float spriteTimer=0.0;  //keep track of sprite time
            spriteTimer+=Clock.getElapsedTime().asSeconds();

            static int count=0; //keep track of where the sub rect is
            if(spriteTimer>delay)
            {
                invadersSprite.setTextureRect(area);
                invadersSprite2.setTextureRect(area);
                invadersSprite3.setTextureRect(area);
                invadersSprite4.setTextureRect(area);
                invadersSprite5.setTextureRect(area);
                invadersSprite6.setTextureRect(area);
                ++count;
                invadersSprite.move(xVelocity, …
Run Code Online (Sandbox Code Playgroud)

c++ sfml

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

C++ Magnitude(Normalize)似乎不正确

我正在做一个2D坦克炮塔游戏,你在屏幕中间旋转坦克,点击你的左按钮然后一个小弹丸移动到那个位置.

我目前正处于当前位置和所需位置的位置,我现在需要做的是获得这两个点的大小,这应该返回1或0.

这是我的C++ VectorClass幅度函数:

float vector2D::magnitude(vector2D vec2)//<! Vector magnitude
{
    float result;
    result = (sqrt(x*vec2.x)+(y*vec2.y));
    return result;
}
Run Code Online (Sandbox Code Playgroud)

这是我将我想要的和当前位置标准化的代码:

currentPos.x = laserTexture.getSize().x/2.0f;
currentPos.y = laserTexture.getSize().y/2.0f;
desiredPos.x = sf::Mouse::getPosition().x;
desiredPos.y = sf::Mouse::getPosition().y;
normalisedLocation = magnitude(desiredPos - currentPos);
Run Code Online (Sandbox Code Playgroud)

当前位置与我的laserTexture中间相关,这是屏幕中间的固定旋转点.

我想要的位置是鼠标点击,它返回X和Y的位置(这是有效的).

数学不是我的强项,所以当谈到编程这类东西时,我比其他人做的更挣扎,所以它需要我更长时间/我会想出一些不太优雅的解决方案.

我的最终目标是获得标准化的位置,然后当点击鼠标左键时,坦克炮塔将会发射,并且射弹将移动到所需的位置.

所以澄清一下:

  • 我的幅度函数是否正确?
  • 我是否正确地规范了我想要的和当前的位置?

谢谢

c++ normalize normals magnitude

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

Google Cloud - Pub/Sub into DataFlow

我通过REST请求调用Pub/Sub.我正在尝试将列化数据放在Pub/Sub上的主题上,然后进入DataFlow,最后进入Big Query,其中定义了Table.

这是所述JSON数据的布局:

[
  {
    "age": "58",
    "job": "management",
    "marital": "married",
    "education": "tertiary",
    "default": "no",
    "balance": "2143",
    "housing": "yes",
    "loan": "no",
    "contact": "unknown",
    "day": "5",
    "month": "may",
    "duration": "261",
    "campaign": "1",
    "pdays": "-1",
    "previous": "0",
    "poutcome": "unknown",
    "y": "no"
    }
]
Run Code Online (Sandbox Code Playgroud)

现在,为了形成正确的JSON主体,需要进入以下Pub/Sub识别请求:

{
    "messages": [{
        "attributes": {
            "key": "iana.org/language_tag",
            "value": "en"
        },
        "data": "%DATA%"
    }]
}
Run Code Online (Sandbox Code Playgroud)

现在,Pub/Sub REST引用声明需要将"Data"字段转换为Base64,这就是我所做的,最终的JSON格式如下所示(%DATA%被原始消息的Base64转换替换)数据)

{
    "messages": [{
        "attributes": {
            "key": "iana.org/language_tag",
            "value": "en"
        },
        "data": "Ww0KICB7DQogICAgImFnZSI6ICI1OCIsDQogICAgImpvYiI6ICJtYW5hZ2VtZW50IiwNCiAgICAibWFyaXRhbCI6ICJtYXJyaWVkIiwNCiAgICAiZWR1Y2F0aW9uIjogInRlcnRpYXJ5IiwNCiAgICAiZGVmYXVsdCI6ICJubyIsDQogICAgImJhbGFuY2UiOiAiMjE0MyIsDQogICAgImhvdXNpbmciOiAieWVzIiwNCiAgICAibG9hbiI6ICJubyIsDQogICAgImNvbnRhY3QiOiAidW5rbm93biIsDQogICAgImRheSI6ICI1IiwNCiAgICAibW9udGgiOiAibWF5IiwNCiAgICAiZHVyYXRpb24iOiAiMjYxIiwNCiAgICAiY2FtcGFpZ24iOiAiMSIsDQogICAgInBkYXlzIjogIi0xIiwNCiAgICAicHJldmlvdXMiOiAiMCIsDQogICAgInBvdXRjb21lIjogInVua25vd24iLA0KICAgICJ5IjogIm5vIg0KICAgIH0NCl0="
    }]
}
Run Code Online (Sandbox Code Playgroud)

Pub/Sub允许这些数据,然后将其放入DataFlow,但这就是一切都中断的地方.DataFlow尝试反序列化信息,但失败并显示以下消息:

(efdf538fc01f50b0): java.lang.RuntimeException: Unable to parse input
        com.google.cloud.teleport.templates.common.BigQueryConverters$JsonToTableRow$1.apply(BigQueryConverters.java:58) …
Run Code Online (Sandbox Code Playgroud)

json google-bigquery google-cloud-platform google-cloud-pubsub google-cloud-dataflow

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