[英]How to kill conflicting process?
由於以下原因,我的 Kivy 應用程序在 Android 上崩潰:
CameraService: Conflicts with: Device 1, client package com.gad.kivyandroid (PID 13357, priority 2147483645)
當我嘗試運行os.kill(13357, SIGKILL)
這將殺死整個應用程序,而不僅僅是沖突的進程。
我能做什么 ?
更新:
我在 adb shell 中運行了ps
以查看進程的名稱是什么,以便我可以更好地定位它。 該服務稱為cameraserver
。 當我跑
pid_to_kill = check_output(['pidof', 'cameraserver'])
os.kill(int(pid_to_kill.decode().strip('\n')), SIGKILL)
它再次殺死整個應用程序,而不僅僅是沖突的相機進程。
第二次更新:
創建布局和 xcamera 實例:
self.xcamera_layout = FloatLayout(size=Window.size)
self.front_cam = XCamera(index=1, directory=path)
self.xcamera_layout.add_widget(self.front_cam)
self.add_widget(self.xcamera_layout)
在切換到后置攝像頭之前(我沒有嘗試將index=1
更改為0
而不是殺死攝像頭實例)我這樣做:
self.xcamera_layout.remove_widget(self.front_cam)
self.remove_widget(self.xcamera_layout)
del self.front_cam
del self.xcamera_layout
我將嘗試簡單地切換相機鏡頭的索引,而不是殺死一個相機實例並啟動另一個。
錯誤輸出:
CameraService: CameraService::connect X (PID 29095) rejected (existing client(s) with higher priority)
我已經嘗試了很多不同的方法來解決這個問題,但顯然真正有效的方法仍未被發現:)
我需要使用self.xcamera_instance._camera._release_camera()
這並不理想,因為它迫使我使用“私有”方法而不是使用與該方法接口的 API,但我需要一些可以解決問題的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.