我必须开发一个应用程序,它可以通过RTMP协议以H.264格式向Wowza服务器广播直播.我正在寻找一个RTMP协议库,可以帮助我将流发布到Server.
如果此问题已经发布,请忽略我.
谢谢 !
我的问题不是重复:我搜索了SO和网络,但还没有找到明确的答案.
在与蓝牙相关的应用程序中,我希望Service在设备启动时启动后台,然后连接到蓝牙信标(如果可用),并在某些事件上向用户发布Android通知.
所以我添加了以下几行AndroidManifest.xml:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<service
android:name="ScanService"
android:icon="@drawable/ic_launcher">
<intent-filter>
<category android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
然而,Eclipse显示警告导出的接收器不需要许可,这可能意味着任何应用程序都可以运行我的服务.当然,我不希望这样.
我只想要Android OS(在启动时)和我的MainActivity(充当后台服务的设置GUI前端)能够(重新)启动ScanService.
这个问题有两个常见的建议:
但我仍然有跟进问题:
BOOT_COMPLETED广播仍然可以投放到"非出口"的服务?RECEIVE_BOOT_COMPLETE还是别的(Android系统是否需要此权限?)android intentfilter android-manifest android-intent android-broadcast
我遇到了这个问题:getSystemService在Context类中定义,所以我假设它在调用时调用context.getSystemService.我无法理解以下getSystemService直接调用的代码BroadcastReceiver.我运行代码,没有错误显示!
代码:
public class MainActivity extends Activity {
……
class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectionManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable())
{
Toast.makeText(context, "network is available",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "network is unavailable",
Toast.LENGTH_SHORT).show();
}
}
}
}
Run Code Online (Sandbox Code Playgroud) java android android-intent android-activity android-broadcast
我正在创建一个BroadcastReceiver来监听Wi-Fi连接的变化:
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); // deprecated
// Get connectivity details from networkInfo...
}
}
}, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
Run Code Online (Sandbox Code Playgroud)
但是,ConnectivityManager.EXTRA_NETWORK_INFO已弃用,那么如何获取NetworkInfo对象呢?
我在intentService中有一个本地广播,它向一个活动发送一条消息.问题是我得到一个空指针异常.任何帮助表示赞赏:)
LogCat错误
01-22 17:57:15.461: I/Arrival(16592): This is instantated
01-22 17:57:16.859: D/sender(16592): Broadcasting message
01-22 17:57:16.867: D/AndroidRuntime(16592): Shutting down VM
01-22 17:57:16.867: W/dalvikvm(16592): threadid=1: thread exiting with uncaught exception (group=0x4110d930)
01-22 17:57:16.875: E/AndroidRuntime(16592): FATAL EXCEPTION: main
01-22 17:57:16.875: E/AndroidRuntime(16592): java.lang.NullPointerException
01-22 17:57:16.875: E/AndroidRuntime(16592): at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
01-22 17:57:16.875: E/AndroidRuntime(16592): at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
01-22 17:57:16.875: E/AndroidRuntime(16592): at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116)
01-22 17:57:16.875: E/AndroidRuntime(16592): at android.os.Handler.dispatchMessage(Handler.java:99)
01-22 17:57:16.875: E/AndroidRuntime(16592): at android.os.Looper.loop(Looper.java:175)
01-22 17:57:16.875: E/AndroidRuntime(16592): at android.app.ActivityThread.main(ActivityThread.java:5279)
01-22 17:57:16.875: E/AndroidRuntime(16592): at java.lang.reflect.Method.invokeNative(Native Method)
01-22 17:57:16.875: E/AndroidRuntime(16592): at java.lang.reflect.Method.invoke(Method.java:511) …Run Code Online (Sandbox Code Playgroud) android broadcastreceiver android-broadcast localbroadcastmanager
所以我有2个应用程序--A和B.
在A我有一个BroadcastReceiver.在receiver标签(清单文件)中,我指定一个android:permission字符串(比方说com.example.app.SEND).现在B不能再向A发送广播了.说得通!
那么为了让B向A发送广播,我该怎么办呢?在B的清单,我指定的uses-permission标签与android:name设置为相同的字符串(com.example.app.SEND)作为接收方android:permission,但仍是广播不会的B到A.
我究竟做错了什么 ?还是还有其他需要做的事情?
- 更新 -
这是我的应用程序A的接收器标签:
<receiver
android:name="com.example.app.MyReceiver"
android:enabled="true"
android:exported="true"
android:permission="com.example.BReceiver.SEND" >
<intent-filter>
<action android:name="com.example.BReceiver" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
这是uses-permission我B的清单上的标签:
<uses-permission android:name="com.pycitup.BReceiver.SEND" />
Run Code Online (Sandbox Code Playgroud) security android broadcastreceiver android-permissions android-broadcast
我想知道,在清单中静态注册广播接收器与启动服务之间会有什么区别?即使应用程序在后台运行,两者都可以运行,在我看来,接收器的编码要简单得多。我在这里想念什么吗?
android broadcastreceiver android-intent android-service android-broadcast
这就是我创建闹钟的方式.当应用程序仍在后台运行时,会触发警报.但是当它从最近的应用程序中清除时,警报就会被丢弃.我正在注册一个新的接收器并提供一个独特的动作来区分两个警报.我的代码中是否有任何错误.
String filter_action = "myPackageName" + request_code_value +"_time";
IntentFilter filter = new IntentFilter(filter_action);
registerReceiver(new AlarmReciever(), filter);
Intent intent = new Intent(filter_action);
intent.putExtra(getString(R.string.get_current_intent_value), request_code_value);
intent.putExtra(getString(R.string.alarmtext), alarm_title);
intent.putExtra(getString(R.string.alarm_time), newAlarm_Choose_Alarm_Value.getText().toString());
Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, request_code_value, intent, 0);
calSet.setTimeInMillis(timeInMillis);
if (calSet.compareTo(calNow) <= 0) {
// Today Set time passed, count to tomorrow
calSet.add(Calendar.DATE, 1);
}
alarmManager.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)
清单文件.
<receiver android:name="com.bigbangpartners.YoWakeUp.activities.AlarmReciever" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="AlarmManager_Start" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
请帮我.提前致谢.
android broadcastreceiver alarmmanager android-pendingintent android-broadcast
我试图用a BroadcastReceiver来处理多个动作.接收器注册了一个intent过滤器,但这限制了我只向接收器发送一种动作类型的意图(参见参考资料Intent.getAction();)
这是我的BroadcastReceiver类以及我想要处理其中的操作的方式.
class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
switch(...){ //the criteria for switching to a particular case
... //some cases to handle here
}
}
}
Run Code Online (Sandbox Code Playgroud)
我注册意图的地方看起来像这样(在服务类中):
@Override
public void onCreate() {
super.onCreate();
mbr = new MyBroadcastReceiver();
this.registerReceiver(mbr, new IntentFilter("MyBroadcastReceiver"));
}
Run Code Online (Sandbox Code Playgroud)
我打电话的方式看起来像这样(实际上我只是设置了一个按钮的监听器):
//creating the pending intent
PendingIntent myPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent("MyBroadcastReceiver"), 0);
//add button listener
remoteViews.setOnClickPendingIntent(R.id.my_button, myPendingIntent);
Run Code Online (Sandbox Code Playgroud)
这种方式迫使我为每个想要传递给MyBroadcastReceiver的意图设置setAction("MyBroadcastReceiver").
但是我想传递具有不同动作的意图,我该怎么办?
或者这不是一个好的方法,最好是为每个不同的意图BroadcastReceiver使用它自己的单独实现IntentFilter …
我制作了一个具有后台服务和广播接收器的应用程序,而我的应用程序包含MainActivity.java和myServiceRunner.java。当我启动后台服务时,它给我这个错误android.content.res.Resources$NotFoundException: String resource id #0x64。
我将这些代码放在受保护的void onCreate(Bundle savedInstanceState)中:
IntentFilter mainFilter=new IntentFilter("liren.action.GOSERVICE3");
receiver=new MyMainLocalReceiver();
registerReceiver(receiver, mainFilter);
Run Code Online (Sandbox Code Playgroud)
MyMainLocalReceiver.java
public class MyMainLocalReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
try
{
int serviceData=intent.getIntExtra("serviceData",0);
//Toast.makeText(getApplicationContext(), serviceData,Toast.LENGTH_SHORT).show();
tvStepsCount.setText(serviceData);
}
catch (Exception e)
{
tvStepsCount.setText(e.toString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
在myServiceRunner扩展Service类内部,我已在onStartCommand方法中添加了这些代码。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Thread triggerService=new Thread(new Runnable() {
@Override
public void run() {
for(;;)
{
try
{
Intent myFilteredResponse = new …Run Code Online (Sandbox Code Playgroud) service android broadcastreceiver android-service android-broadcast