3

我正在尝试将 libstreaming 的 rtsp 服务器部分添加到我的应用程序中并将其作为服务运行,但即使我的应用程序构建并运行良好,服务部分也没有安装,我将不胜感激任何帮助找出原因。我想我错过了一步。

我将 libstreaming 作为一个模块添加到我现有的应用程序中,并且 libstreaming 被列为依赖项。这一切都可以编译并正常启动,但 context.startService() 为 ComponentName 返回 null。根据文档,这意味着服务“不存在”,所以我想我错过了一些东西,但我不知道是什么。我在 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>
4

1 回答 1

3

我发现了问题,这是解决方案,以防它帮助其他人。在我的 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>
于 2015-09-24T19:59:09.267 回答