java - 如何将模块安装为服务 - Android

标签 java android service rtsp libstreaming

我正在尝试将 libstreaming 的 rtsp 服务器部分添加到我的应用程序并将其作为服务运行,但即使我的应用程序构建并运行良好,服务部分仍未安装,我将不胜感激出为什么。我想我错过了一步。

我将 libstreaming 作为一个模块添加到我现有的应用程序中,并且 libstreaming 被列为依赖项。它全部编译并启动正常,但 context.startService() 为 ComponentName 返回 null。 According to the docs ,这意味着该服务“不存在”,所以我想我遗漏了一些东西,但我不知道是什么。我在 Android Studio 中构建,然后使用 shift+F9 安装我的应用程序并开始调试,这必须安装应用程序而不是服务部分吗?任何帮助将不胜感激!

这是我的配置方式:

enter image description here

依赖:

enter image description here

我启动服务的代码:

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>

最佳答案

我发现了问题,这里是解决方案,以防对其他人有帮助。在我的 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>

关于java - 如何将模块安装为服务 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750151/

相关文章:

java - 问题,无法将 View.onClickListener 的类与主类分开。帮助!

java - 在java中计算两个时间戳之差的最简单方法是什么?

android - 即使在应用程序最小化状态下,如何始终运行 asynctask?

c++ - 从服务启动进程

java - 去除高亮匹配字符串内容

java - JNI GetMethodID 调用时出现未决异常 java.lang.ClassNotFoundException

android - 无法使用 Android Studio 0.60/Gradle 0.11 解析 build.gradle 中的类

android - 对象的虚线后边缘

android - horizo​​ntalscrollview - onScroll?

javascript - angular.run() 方法中的异步函数在 Controller 之前尚未执行