我正在尝试在我公司的专有硬件设备上执行服务发现,该设备拥有自己的WiFi网络,并在该网络上宣传一项bonjour服务.当我连接到那个WiFi网络时,我正在使用NSD来发现该服务并解决它.
代码非常简单,通常效果很好而且很快.除了我有一个相当反复出现的问题(10次尝试中有5次)到目前为止本地化我的三星S8 +.到目前为止无法在S6或Pixel XL上重现.
问题是DiscoveryListener除了onDiscoveryStarted()之外从未做过任何事情,它只是永远运行.如果我杀了应用程序并重新开始,有时候它会继续挂起.
这就像有一个被阻塞的线程或东西,但是在日志中没有有用的信息(我能找到),而且我还没有发现任何东西可以锁定,因为我可以做些什么来从中恢复.
我添加了一个超时,它将在30秒后停止监听器,但通常在我重试之后它仍然无效.
服务发现过程包含在LiveData中,LiveData在活动时启动.
const val SERVICE_TYPE_FOO = "_foo._tcp."
private val serviceDiscoveryListener = ServiceDiscoveryListener()
override fun onActive() {
super.onActive()
stopRunnable = StopDiscoveryRunnable()
nsdManager.discoverServices(
SERVICE_TYPE_FOO,
NsdManager.PROTOCOL_DNS_SD,
serviceDiscoveryListener
)
handler.postDelayed(stopRunnable, SERVICE_DISCOVERY_TIMEOUT_MS)
}
private lateinit var stopRunnable: Runnable
private inner class StopDiscoveryRunnable : Runnable {
override fun run() {
try {
nsdManager.stopServiceDiscovery(serviceDiscoveryListener)
Timber.w("service discovery timed out")
postValue(ServiceDiscoveryState.Error)
} catch (e: Throwable) {
// no-op
}
}
}
Run Code Online (Sandbox Code Playgroud)
听众很简单......
private inner class ServiceDiscoveryListener : NsdManager.DiscoveryListener {
override fun onServiceFound(serviceInfo: NsdServiceInfo?) …Run Code Online (Sandbox Code Playgroud) 我正在通过将静态 1080x1080 .png 图像与 24/48 .wav 音频相结合,在我的 Android 应用程序中创建一个 mp4 视频,尝试生成一个与社交媒体平台兼容并可共享到社交媒体平台(例如 Facebook 和 Instagram)的文件(喂养)。
当我尝试分享我创建的视频时,它们会在 Instagram 应用程序中加载和预览(在 Android 和 iOS 上均已测试),但在最后一步点击“分享”按钮后,UI 返回到我的提要和上传进度立即切换到"Not Posted Yet. Try Again". 如果我然后点击重试按钮,我会立即收到一个对话框,说明"Couldn't Post Video" "There was a problem rendering your video. If this keeps happening, you may have to use another video."
我正在使用ffmpeg(通过 tanersener 的 mobile-ffmpeg 库)来做到这一点。
到目前为止,我发现的所有文档都没有显示 Instagram 上传要求的高度具体细节。我在音频中使用 AAC,libx264在视频中使用 h.264 ( )。我使用的示例的持续时间为 30 秒。如上所述,PNG 为 1080x1080。
我通过在我的 Mac 上使用 cmd-line ffmpeg 使用相同的输入文件并测试了许多参数变体,使 Android 脱离了图片,这些变体都没有创建可上传的视频。
我有一个由我们的 iOS …