我正在尝试将libstreaming的rtsp服务器部分添加到我的应用程序并将其作为服务运行,但即使我的应用程序构建并运行正常,服务部分也未安装,我将不胜感激任何帮助为什么。我想我错过了一步。
我将libstreaming作为模块添加到现有应用程序中,并将libstreaming列为依赖项。它编译并启动正常,但context.startService()为ComponentName返回null。 According to the docs,这意味着服务“不存在”,所以我想我错过了什么,但我不知道是什么。我正在Android Studio中构建,然后使用shift + F9安装我的应用程序并开始调试,这必须安装应用程序而不是服务部分?任何帮助将不胜感激!
以下是我的配置方式:
依赖性:
启动服务的代码:
ComponentName cName = null;
try
{
// Start the RTSP server. Returns name of the component that is started, or is already running
cName = this.startService(new Intent(this, RtspServer.class));
}
catch(Exception e)
{
postUIMessage("onCreate() startService() exception: " + e.toString());
}
if(cName != null)
{
postUIMessage("Service started: " + cName.toString());
}
else
{
postUIMessage("Service NOT started: " + cName.toString());
}
我的AndroidManifest.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.matt.mattvideoreceiver" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<service android:name="net.majorkernelpanic.streaming.rtsp.RtspServer"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:2)
我发现了问题,这是解决方案以防万一。在我的AndroidManifest.xml文件中,行:
<service android:name="net.majorkernelpanic.streaming.rtsp.RtspServer"/>
必须进入
<Application>
部分。一旦我在应用程序部分中移动了该行,context.startService()现在返回服务名称,表明该服务正在运行。
该服务没有像我预期的那样发送视频,但这是一个不同的问题,至少它现在正在运行并且回答了这个问题。 :)
这是有效的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.matt.mattvideoreceiver" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<service android:name="net.majorkernelpanic.streaming.rtsp.RtspServer"/>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>