我有一个活动
class DummyActivity : Activity() {
companion object {
@JvmStatic fun onNewIntent(context: Context): Intent {
val intent = Intent(context, DummyActivity.javaClass)
return intent
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
Run Code Online (Sandbox Code Playgroud)
它在清单中声明如下:
<activity android:name=".DummyActivity"/>
</application>
Run Code Online (Sandbox Code Playgroud)
当我尝试启动它时,我得到:
引起:android.content.ActivityNotFoundException:无法找到显式活动类> {com.example.andrzejzuzak.visiondummyapp/com.example.andrzejzuzak.visiondummyapp.DummyActivity $ Companion}; 你有没有在AndroidManifest.xml中声明这个活动?在Android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1794)的android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)android.app.Activity.startActivityForResult(Activity.java:3930)的android.support.在android.app.Activity.startActivityForResult(Activity.java:3890)的android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)下的v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)位于android.app.Activity.startActivity(Activity.java:4181)的android.app.Activity.startActivity(Activity.java:4213)上的.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859).在Android.app的android.app.ActivityThread.deliverResults(ActivityThread.java:3695)的android.app.Activity.dispatchActivityResult(Activity.java:6456)上的example.andrzejzuzak.visiondummyapp.MainActivity.onActivityResult(MainActivity.kt:85) .ActivityThread.handleSendResult(ActivityThread.java:3742 )在Android.A.运行时android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1393)上的android.app.ActivityThread.-wrap16(ActivityThread.java). os.Looper.loop(Looper.java:148)在android.app.ActivityThread.main(ActivityThread.java:5417)java.lang.reflect.Method.invoke(Native Method)
困扰我的是这条线:
无法找到显式活动类{com.example.andrzejzuzak.visiondummyapp/com.example.andrzejzuzak.visiondummyapp.DummyActivity $ Companion
它是否真的意味着我必须在某处注册Companion对象?
我想VNDetectTextRectanglesRequest从Vision框架中使用它来检测仅包含一个字符(数字为“ 9”)且带有白色背景的图像中的区域。我正在使用以下代码来做到这一点:
private func performTextDetection() {
let textRequest = VNDetectTextRectanglesRequest(completionHandler: self.detectTextHandler)
textRequest.reportCharacterBoxes = true
textRequest.preferBackgroundProcessing = false
let handler = VNImageRequestHandler(cgImage: loadedImage.cgImage!, options: [:])
DispatchQueue.global(qos: .userInteractive).async {
do {
try handler.perform([textRequest])
} catch {
print ("Error")
}
}
}
func detectTextHandler(request: VNRequest, error: Error?) {
guard let observations = request.results, !observations.isEmpty else {
fatalError("no results")
}
print("there is result")
}
Run Code Online (Sandbox Code Playgroud)
我得到的观察结果数为0,但是,如果我在黑色背景上提供带有文本“ 123”的图像,则会将“ 123”检测为文本区域。所描述的问题也出现在2位数字上,白色背景上的'22'也没有被检测到。
在我的情况下,为什么Vision API在白色背景上只能检测到3位以上的数字?