小编Tom*_*Tom的帖子

Android AudioRecord类 - 快速处理实时麦克风音频,设置回调功能

我想从麦克风录制音频并访问它以便近乎实时地播放.我不确定如何使用Android AudioRecord类来录制一些麦克风音频并快速访问它.

对于AudioRecord类,官方网站说'应用程序及时轮询AudioRecord对象','填充缓冲区的大小决定了在超载未读数据之前记录的时间长度'.后来建议在轮询频率较低时应使用更大的缓冲区.他们实际上从未在代码中显示示例.

我在书中看到的一个例子是使用AudioRecord类连续读取一个新填充了实时麦克风音频的缓冲区,然后应用程序将这些数据写入SD文件.伪代码看起来像 -

set up AudioRecord object with buffer size and recording format info
set up a file and an output stream
myAudioRecord.startRecording();
while(isRecording)
{
    // myBuffer is being filled with fresh audio
    read audio data into myBuffer
    send contents of myBuffer to SD file
}
myAudioRecord.stop();
Run Code Online (Sandbox Code Playgroud)

这段代码如何将其读数与记录速率同步还不清楚 - 布尔"isRecording"是否在其他地方正确地打开和关闭?看起来这段代码可能过于频繁或过于频繁地读取,具体取决于读取和写入所需的时间.

网站doc还说AudioRecord类有一个名为OnRecordPositionUpdateListener的嵌套类,它被定义为一个接口.该信息表明,您以某种方式指定了您希望收到录制进度通知的时间段以及事件处理程序的名称,并且会以指定的频率自动调用您的事件处理程序.我认为伪代码中的结构会像 -

set target of period update message = myListener
set period to be about every 250 ms
other code

myListener()
{
    if(record button was recently tapped)
        handle …
Run Code Online (Sandbox Code Playgroud)

java android android-hardware audiorecord

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

获取在PHP中执行当前函数的代码行和文件?

想象一下我有以下情况:

File1.php

<?php
 include("Function.php");
 log("test");
?>
Run Code Online (Sandbox Code Playgroud)

Function.php

<?php
 function log($msg)
 {
  echo "";
 }
?>
Run Code Online (Sandbox Code Playgroud)

我想更改日志功能,以便它将产生以下内容:

test(文件:File1.php,行号:3)

那么,以何种方式获取PHP中执行当前函数的代码的文件名和行号?

编写积压使用注释:当我以面向对象的编程方式使用backlog时,我有以下情况.

的index.php

<?php
 include("Logger.static.php");
 include("TestClass.class.php");
 new TestClass();
?>
Run Code Online (Sandbox Code Playgroud)

TestClass.class.php

<?php
 class TestClass
 {
   function __construct()
   {
     Logger::log("this is a test log message");
   }
 }
?>
Run Code Online (Sandbox Code Playgroud)

Logger.static.php

<?php
 class Logger
 {
   static public function log($msg)
   {
     $bt = debug_backtrace();
     $caller = array_shift($bt);
     echo $caller['file'];
     echo $caller['line'];
   }
 }
?>
Run Code Online (Sandbox Code Playgroud)

此示例将作为文件"Index.php"返回,并作为第4行返回,这是启动类的位置.但是,它应该返回文件TestClass.class.php和第6行.任何想法如何解决这个问题?

php

57
推荐指数
2
解决办法
5万
查看次数

如何替换git历史文件中的文本?

我一直使用基于接口的git客户端(smartGit),因此对git控制台没有多少经验.

但是,我现在需要在历史记录中替换所有.txt文件中的字符串(因此,不要删除整个文件而只是替换字符串).我找到了以下命令:

git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#(PASSWORD1|PASSWORD2|PASSWORD3)#xXxXxXxXxXx#g"' -- --all
Run Code Online (Sandbox Code Playgroud)

我试过这个,不幸的是注意到密码确实发生了变化,所有二进制文件都被破坏了.图像等都会被破坏.

有没有更好的方法来做到这一点,不会破坏我的二进制文件?

谢谢.

编辑:

我搞砸了什么.导致二进制文件损坏的实际代码是:

$ git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/originalpassword/newpassword/g' {} \;"
Run Code Online (Sandbox Code Playgroud)

顶部的代码实际上使用我的密码奇怪地删除了所有文件.

git version-control substitution git-filter-branch git-rewrite-history

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

数学符号相反?

这样的功能存在吗?我创建了自己的但想使用官方的:

private function opposite(number:Number):Number
{
    if (number < 0)
    {
        number = Math.abs(number);
    }
    else
    {
        number = -(number);
    }
    return number;
}
Run Code Online (Sandbox Code Playgroud)

因此,-5变为5,3变为-3.

编辑:请原谅我是愚蠢的.我是人类.:)

math function

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

Sequelize哪里没有

我有一个ArticleSequelize模型,其中的文章彼此相关.有些文章是其他文章的翻译副本.关系设置如下:

var Article = sequelize.define('Article', {
    type                : DataTypes.ENUM('source', 'translated'),
    sourceArticleId     : DataTypes.INTEGER
});

db.Article.hasMany(db.Article, {
    foreignKey: 'sourceArticleId',
    as        : 'TranslatedArticles'
});
Run Code Online (Sandbox Code Playgroud)

所以,一篇文章type = 'source'可以有很多translatedArticles地方type = 'translated'.

现在,我想查询所有source没有翻译的文章.

基于Sequelize项目github上的一个问题,这将完成如下:

Article.findOne({
    where: Sequelize.literal('translatedArticles.sourceArticleId IS NULL'),
    include: [
        {
            model: Article,
            as   : 'TranslatedArticles'
        }
    ]
});
Run Code Online (Sandbox Code Playgroud)

然而,当我运行这个时,我得到:

SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'translatedArticles.sourceArticleId' in 'where clause'

我也试过变化的命名,其中包括TranslatedArticles.sourceArticleId,articles.sourceArticleId,和Articles.sourceArticleId.

我错过了什么吗?

请注意,我通过使用文字NOT EXISTS查询暂时解决此问题,如下所示:

Article.findOne({
    where: …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js

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

在PHP5和Actionscript3中获取unix时间戳(以毫秒为单位)

在Actionscript中,Unix时间戳(以毫秒为单位)可以这样获得:

public static function getTimeStamp():uint
        {
            var now:Date = new Date();
            return now.getTime();
        }
Run Code Online (Sandbox Code Playgroud)

该文件明确指出以下内容:

getTime():Number返回Date对象自1970年1月1日午夜(通用时间)以来的毫秒数.

当我跟踪它时,它返回以下内容:

824655597
Run Code Online (Sandbox Code Playgroud)

所以,824655597/1000/60/60/24/365 = 0.02年.这显然是不正确的,因为它应该是大约39年.

问题1:这里有什么问题?

现在,在PHP部分:我正在尝试以毫秒为单位获取时间戳.该microtime()函数返回字符串(0.29207800 1246365903)或浮点数(1246365134.01),具体取决于给定的参数.因为我觉得时间戳很简单,所以我自己会这样做.但是现在我已经尝试并注意到了这个浮点数,并将它与我在Actionscript中的问题结合起来,我真的不知道.

问题2:如何让它返回Unix时间戳中的毫秒数?

时间戳应该很容易,我可能会遗漏一些东西......对不起.提前致谢.

编辑1:自己回答了第一个问题.见下文.
EDIT2:我自己也回答了第二个问题.见下文.48小时内无法接受答复.

php unix timestamp actionscript-3

27
推荐指数
4
解决办法
6万
查看次数

在创建网络爬虫时,可以使用哪些技术来检测所谓的"黑洞"(蜘蛛陷阱)?

在创建Web爬网程序时,您必须设计一些收集链接并将其添加到队列的系统.这些链接中的一些(如果不是大多数)将是动态的,这看起来是不同的,但是不添加任何值,因为它们是专门为傻瓜爬虫创建的.

一个例子:

我们通过输入初始查找URL告诉我们的抓取工具抓取域evil.com.

让我们假设我们最初让它爬到头版,evil.com/index

返回的HTML将包含几个"唯一"链接:

  • evil.com/somePageOne
  • evil.com/somePageTwo
  • evil.com/somePageThree

抓取工具会将这些添加到未抓取的网址的缓冲区中.

在抓取somePageOne时,抓取工具会收到更多网址:

  • evil.com/someSubPageOne
  • evil.com/someSubPageTwo

这些似乎是独一无二的,所以它们是独一无二的.它们是唯一的,因为返回的内容与以前的页面不同,并且URL对于爬虫来说是新的,但是看起来这只是因为开发人员已经创建了"循环陷阱"或"黑洞".

抓取工具将添加此新子页面,子页面将具有另一个子页面,该子页面也将被添加.这个过程可以无限进行.每个页面的内容都是唯一的,但完全没用(它是随机生成的文本,或从随机源中提取的文本).我们的抓取工具将继续查找我们实际上不感兴趣的新页面.

这些循环陷阱非常难以找到,如果您的爬虫没有任何东西可以防止它们到位,它将被卡在某个域上以获得无穷大.

我的问题是,有什么技术可以用来检测所谓的黑洞?

我听到的最常见的答案之一是对要抓取的页面数量的限制.但是,当您不知道要抓取哪种类型的站点时,我无法看到这是一种可靠的技术.像维基百科这样的合法网站可以拥有数十万个网页.这种限制可能会对这类网站产生误报.

web-crawler

27
推荐指数
3
解决办法
5138
查看次数

JFrame:获得没有边框的大小?

在Java中,是否可以在没有标题和其他边框的情况下获得JFrame的宽度和高度?

frame.getWidth()和frame.getHeight()1似乎返回包括边框的宽度.

谢谢.

java swing awt jframe

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

Laravel 5:在从BaseController扩展的控制器中对FormRequest类进行类型提示

我有一个BaseController为我的API服务器提供大多数HTTP方法的基础,例如store方法:

BaseController.php

/**
 * Store a newly created resource in storage.
 *
 * @return Response
 */
public function store(Request $request)
{
    $result = $this->repo->create($request);

    return response()->json($result, 200);
}
Run Code Online (Sandbox Code Playgroud)

然后我BaseController在一个更具体的控制器中扩展它,例如UserController,像这样:

UserController.php

class UserController extends BaseController {

    public function __construct(UserRepository $repo)
    {
        $this->repo = $repo;
    }

}
Run Code Online (Sandbox Code Playgroud)

这非常有效.但是,我现在想要扩展UserController以注入Laravel 5的新FormRequest类,它负责User资源的验证和身份验证之类的事情.我想这样做,通过覆盖store方法并使用Laravel的类型提示依赖注入为其Form Request类.

UserController.php

public function store(UserFormRequest $request)
{
    return parent::store($request);
}
Run Code Online (Sandbox Code Playgroud)

从哪里UserFormRequest延伸Request,其本身延伸自FormRequest:

UserFormRequest.php

class …
Run Code Online (Sandbox Code Playgroud)

php dependency-injection ioc-container laravel laravel-5

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

没有配额的JSON搜索引擎API列表,比如Bing?

我想显示一些自定义搜索结果.

我查看了Google和Microsoft(Bing)的JSON API.不幸的是,谷歌每天的查询数量有限制(最多一万次查询需要50美元).但是,Bing每天允许"无限制"的查询量,免费.

还有其他服务,例如Bing的JSON API,没有Google的API这样的查询限制吗?

一个相关的问题可能是Metacrawler这样的服务如何组合来自多个搜索引擎的搜索结果,而这些引擎的服务条款明确指出这些结果可能只能通过这种(付费)API获得,而不是通过爬行获得.

search-engine google-search bing

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