我已经实现了一个Android后台服务(基于Pocket Sphinx),可以在手机屏幕打开时持续监听,检测和发现某些关键字,然后做出相应的反应(对于domotic项目).但是,我的应用程序应始终具有较低的优先级,并且我希望它在任何其他应用程序需要使用时释放麦克风的资源.当应用程序 - 想要使用麦克风时,我可以接收任何系统意图或系统广播(以便我的服务可以释放它)吗?或者,有更好的方法或更好的做法吗?
当另一个应用想要访问麦克风时,这是我想避免的错误的日志:
AudioFocus requestAudioFocus() from android.media.AudioManager@419c3908com.google.android.voicesearch.a.h@419c67b8
I/MicrophoneInputStream(32360): mic_starting com.google.android.speech.audio.w@41989a30
D/AudioHardwareALSA(277): openInputStream: devices 0x400000 format 0x1 channels 16 sampleRate 16000
E/AudioHardwareALSA(277): error:Input stream already opened for recording
E/AudioRecord(32360): Could not get audio input for record source 6
E/AudioRecord-JNI(32360): Error creating AudioRecord instance: initialization check failed.
E/AudioRecord-Java(32360): [ android.media.AudioRecord ] Error code -20 when initializing native AudioRecord object.
E/MicrophoneInputStream(32360): Failed to initialize AudioRecord
Run Code Online (Sandbox Code Playgroud) 我已经成功地在Apple Watch(WatchOS 2.1,iOS 9.2.1)中实现了原生语音识别(听写),基本上我使用了这个代码,带有一个空的"菜单选项数组":
func launchDictation(){
self.presentTextInputControllerWithSuggestions([], allowedInputMode: WKTextInputMode.Plain, completion:{
(results) -> Void in
let aResult = results?[0] as? String
if(!(aResult == nil)){
print(aResult)
print("SHORT ASR COMPLETED")
dispatch_async(dispatch_get_main_queue()) {
// Update UI
}
}//end if
})//end show voice menu
}
Run Code Online (Sandbox Code Playgroud)
因为它是......用户点击"说话按钮",然后弹出一个视图(显示用户说话时检测到的单词和一个漂亮的小音量图表).现在,用户必须说话,然后点击"完成"以完成语音识别.如果检测到短语但未点击"完成",则"听写失败"最终将出现在屏幕上.有人知道如何实现一些侦听器或委托,在用户停止讲话几秒后检测到听写过程结束时?
当我尝试将IB插座从UIView拖放到我的ViewController.swift中时,XCode崩溃(当我在输入IBOutlet的名称后按OK时).弹出窗口显示:"XCode意外退出":忽略,报告,重新打开.该报告称许多冗长,最值得注意的警告是:
UNCAUGHT EXCEPTION (NSInvalidArgumentException): +[IDESwiftSourceCodeGenerator isTeardownCounterpart:]: unrecognized selector sent to class 0x1159415c0
prepareToAddSourceCodeForCounterparts:documentLocationForCounterpartBlock:addSourceCodeForCounterpartBlock:options:error:] (in IDEKit)
8 0x000000011588a13f -[IDESwiftSourceCodeGenerator prepareToAddPropertyWithName:type:inClassItem:options:error:] (in IDELanguageSupportUI)
Run Code Online (Sandbox Code Playgroud)
我有其他IBOutlets适用于UILabels和表视图,所以我不明白,为什么会发生这种情况.
我是Xcode的新手,如果您需要任何其他信息来检测出错的地方,我很乐意提供.已经尝试了通常的清洁,重建,重新打开,重启和模拟器重置以防万一....
我有这行代码,我想提取"标题"键:
var title = jParams["title"] as! String
Run Code Online (Sandbox Code Playgroud)
但它不会让我编译,如果我收到红色的错误消息:
无法下标具有String类型索引的AnyObject类型的值
当println(jParams)我在日志中显示jParams的内容时,我得到以下内容:
INCOMING LIST PARAMETERS (jParameters)
Optional({
title = "Example List";
values = (
{
id = 1;
name = "Line 1";
},
{
id = 2;
name = "Line 2";
},
{
id = 3;
name = "Line 3";
}
);
})
Run Code Online (Sandbox Code Playgroud)
我是Swift的新手,所以我不熟悉处理JSON来处理这些类型问题的细节.可能有什么不对?
//jParams comes from a JSON server response
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
if data != nil {
var jdata = JSON(data: data!)
var …Run Code Online (Sandbox Code Playgroud) 当我初始化语音识别应用程序时,我使用这行代码:
Boolean b=SpeechRecognizer.isRecognitionAvailable(cContext);
Run Code Online (Sandbox Code Playgroud)
为什么 b 在某些设备(例如模拟器)上总是等于 false?我从 Android 文档中的描述中了解该功能的作用,但该文档没有说明如何使语音识别可用。我必须在我的模拟器上设置其他东西吗?您知道如何使语音识别始终可用吗?
我在我的应用程序中声明了一个 Application 类:
public class application extends Application {
String TAG="joshtag";//app.TAG;
@Override
public void onCreate() {
super.onCreate();
Log.e(TAG, "Initializing APP");
initializeSingletons(getApplicationContext());
}
protected void initializeSingletons(Context c){
Log.e(TAG, "...preparing to Initialize Singleton");
app.initInstance(c);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您想象的那样,我希望这个类在我的应用程序启动后立即运行,目的是初始化一个单例类(这个单例类不扩展任何其他类,并将包含一个变量来存储 getAppContext)。但是,日志消息永远不会在“onCreate”和“initializeSingleton”内部触发,并且单例没有被初始化。我的最终目标是存储一个全局 getAppContext 变量,我可以在不继承它的类中使用该变量。如果我以错误的心态处理问题,请告诉我并说明原因。
要在Swift中使用旧的WebView自动缩放网页,我所要做的就是:
var w:UIWebView
w.scalesPageToFit=true
Run Code Online (Sandbox Code Playgroud)
我找不到WKWebView的等效方法,并且网页在我的应用中看起来太大了.如何自动调整WKWebView的内容?
- 我正在使用Xcode 7和Swift
我需要检测我的应用何时可见?(例如,通过双击Home按钮然后点击已经在后台的应用程序)如果可能,我想在我的UIViewController中检测到该事件.我正在使用Swift 2.2.
我有Nuance的Speech Recon项目的两个部分,模块的.h文件(ObjectiveC)和一个ViewController(swift).
我想SpeechRecognition在我的swift中设置一个对象viewController,并听取onBegin,onStop ......以及这些方法.
使其编译的唯一方法是使用nil作为委托参数来初始化SpeechRecon对象.显然这不好,因为我的onStart ...和onFinish函数没有触发.
我已经为SKRecogniser文件实现了一个协议,并将我的ViewController类扩展为SKReconDelegate ...但是如果我使用"self"作为初始化对象的委托,编译器会说这UIViewController不是一个有效的类.我知道我需要在两个类之间建立一些委托,但我是一个Android开发人员,我的iOS技能仍然不够清晰.这是代码,如果我错过了一些重要的部分,请告诉我.我将非常感谢你的帮助.
//ViewController code, in SWIFT
//NO PROTOCOLS NEEDED HERE!
class ViewController: UIViewController, SpeechKitDelegate, SKRecognizerDelegate{
override func viewDidLoad() {
super.viewDidLoad()
SpeechKit.setupWithID( "NMDPTRIAL_nuance_chch_com9999",
host:"sandbox.nmdp.nuancemility.net",
port:443,
useSSL:false,
delegate:self) //error said "self" is of an invalid ViewController type :( because I was NOT implementing all 4 methods BELOW:
}
//a bit ahead, I have the same problem with a button
@IBAction func btnmicaction(sender: AnyObject) {
self.voiceSearch=SKRecognizer(type: "websearch", …Run Code Online (Sandbox Code Playgroud) ios ×4
swift ×4
android ×3
xcode ×2
apple-watch ×1
delegates ×1
header-files ×1
iboutlet ×1
java ×1
json ×1
microphone ×1
nsdictionary ×1
service ×1
singleton ×1
swift2 ×1
uiview ×1
watchos-2 ×1
wkwebview ×1