我是 Android 和 Java 的新手,我需要知道这是否可行
我想捕获输入到手机麦克风的声音,对此信号执行一些计算并将修改后的信号输出到耳机
正在处理麦克风的输入像这样实时可能吗?
ANDROID 开发者网站说
注意:Android Emulator 不具备捕获音频的能力, 但实际设备可能会提供这些能力。
大概是什么意思?有没有可能有些手机根本不允许使用麦克风阅读?
我有以下matlab代码,我试图在16KHz采样频率下获得64个不同正弦波频率的样本:
close all; clear; clc;
dt=1/16000;
freq = 8000;
t=-dt;
for i=1:64,
t=t+dt;a(i)=sin(2*pi*freq*t);
end
plot(a,'-o'); grid on;
Run Code Online (Sandbox Code Playgroud)
对于freq = 1000,输出图是
图表似乎正常到2000,但在3000,图表是
我们可以看到每个周期的振幅都会发生变化
同样,在4000处,图表是
不完全是一个正弦波,但振幅在每个周期都是预期的,如果我播放它听起来像一个单一的频率音调
但我们再次在6000
我们有8000
由于采样频率为16000,我假设我应该能够生成高达8000的正弦波样本,并且我期望我在4000处得到的图形出现在8000处.相反,即使在3000处,图形也开始看起来很奇怪
如果我将采样频率更改为32000并将正弦波频率更改为16000,那么我得到的是与现在8000相同的图形.为什么matlab会以这种方式运行?
编辑:
在freq = 7900

我正在尝试在android中学习一些蓝牙编程
我已经能够创建一个基本程序,发现并连接到一个内置蓝牙功能的(目前只是一个)开发板
我希望能够将命令发送到板上以及使用RFCOMM从它接收消息
我被告知如果不知道电路板和电话的UUID我可能无法进一步移动
在挖掘这个时,我发现电路板使用的是UUID 0xFFFF是自定义服务解析协议,我也从这里发现,SDP中有可能仅使用16位表示一些选定的UUID范围,可以扩展到128位,但我无法找到如何进行这种扩展并且页面中给出的链接似乎被打破了
可能有人请提供一个简单的解释UUID是什么(在蓝牙方面,特别是在RFCOMM方面),它们对bluetoo的意义何在 编程,如何从我的主板使用的16位版本中获取128位uuid?
提前致谢.
在这个表达中
lmin=lminflag & ~kmod & actminsub<nsm*pminu & actminsub>pminu;
Run Code Online (Sandbox Code Playgroud)
&运算符就像一个按位AND运算符?lminflag和kmod都是具有逻辑1或0作为元素的数组,并且lmin也变为1或0.
我刚刚开始学习java进入android编程
我假设我使用java编译的所有内容都被编译为java字节码,必须由虚拟机解释.这样javac filename.java产生filename.class,它必须由JVM解释字节码(至少这是我的想法,我会跑用java此类文件filename.class).但是,如果我写这样的话,
public class Arrays {
public static void main(String[] args) {
int[] a1 = { 1, 2, 3, 4, 5 };
int[] a2;
a2 = a1;
for(int i = 0; i < a2.length; i++)
a2[i]++;
for(int i = 0; i < a1.length; i++)
System.out.println(
"a1[" + i + "] = " + a1[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
它只是在控制台上显示一些消息,看起来与C/C++输出没什么不同.这真的只是一个C/C++程序,还是Windows仍然在后台以某种方式调用VM?我知道浏览器需要安装VM才能运行这样的东西
import javax.swing.*;
import java.awt.*;
public class Applet1 extends JApplet {
public void init() {
getContentPane().add(new JLabel("Applet!")); …Run Code Online (Sandbox Code Playgroud) 我正在查看本书中提供的示例代码
enum Coin
{
PENNY(1),
NICKEL(5),
DIME(10),
QUARTER(25);
private final int denomValue;
Coin(int denomValue)
{
this.denomValue = denomValue;
}
int denomValue()
{
return denomValue;
}
int toDenomination(int numPennies)
{
return numPennies / denomValue;
}
}
public class Coins
{
public static void main(String[] args)
{
if (args.length == 1)
{
int numPennies = Integer.parseInt(args[0]);
System.out.println(numPennies + " pennies is equivalent to:");
int numQuarters = Coin.QUARTER.toDenomination(numPennies);
System.out.println(numQuarters + " " + Coin.QUARTER.toString() +
(numQuarters != 1 ? "s," : ","));
numPennies …Run Code Online (Sandbox Code Playgroud) 所以在这个基本的Java程序中,
public class HelloWorld{
public void testFunc(){
System.out.println("Class = "+this);
}
@Override
public String toString(){
return "TEST";
}
public static void main(String[] args){
int i = 5;
HelloWorld hw = new HelloWorld();
System.out.println("Hello, World");
hw.testFunc();
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
该行System.out.println(i);自动将其转换int i为a String.我认为任何需要String类型参数的函数都会在java中自动执行此转换(与C中不同).但是,如果我在Android
Toast.makeText(getApplicationContext(), i, Toast.LENGTH_SHORT).show();
中尝试将其i声明为int扩展活动类中的一个,则应用程序会在启动时崩溃.那么这种转换在Java中是如何工作的呢?