C
cqp
Neues Mitglied
Hi,
ich studiere noch Wirtschaftsinformatik, kann daher bissl Java, hätte mir das aber mit der App programmieren etwas einfacher vorgestellt, daher bräuchte ich jetzt etwas Hilfe.
Zu der App:
Ich habe eine App auf meinem Smartphone, welches mir Push-Mitteilungen schicken kann, aber ich kann dort keinen Sound oder ähnliches einstellen, außerdem ist es elementar wichtig, dass es so lange vibriert / sound abspielt bis ich es selber beende! Daher auch die App. Die App soll später noch erweitertet werden, aber erst mal soll das laufen.
Ich habe mich an dem Beispiel von kpbird entlang gehangelt...
Allerdings habe ich noch Probleme...im Prinzip funktioniert die App, also es wird die Notifikation von der App (CMC Markets) erkannt und dann startet der mp und die vibration, wenn ich dann auf den Stopp Button klicke, stoppt auch beides. Wenn ich dann die Notification aber lösche, vibriert und klingelt es erneut, kann ich aber mit dem Stopp Button wieder beenden.
Wenn ich allerdings zuerst die Push Nachricht lösche, dann startet ein "neuer" mp der sound wird überlagert jetzt kann ich mit Stopp nur einen Sound/Vibration beenden, der Rest läuft weiter...
Wenn kein Sound/Vibration abgespielt wird und ich dann auf Stopp klicke, stürzt die App ab, Fehlermeldung:
Ist unschön, aber im Prinzip nicht so wichtig mit dem abstürzen...
Dann funktioniert die App wie oben komischerweise Minuten lang und dann, wenn ich das Smartphone nicht mehr am Rechner dran habe und ein paar Stunden später geht sie nicht mehr... Auch wenn ich sie neu starte, geht nicht, wenn ich dann über Eclipse neu lade gehts komischerweise wieder...
Wenn ich per Eclispe die App aufs Smartphone lade ist die ja "drauf" oder muss ich die nochmal anders installieren auf dem Smartphone?
Gut wäre auch noch wenn ich mir ausgeben könnte, was CMC Markets da genau für eine Push-Mitteilung gesendet hat, ich seh nur, dass es von der App kommt, aber nicht den Inhalt.
Zusammengefasst: Die App soll die Notifications scannen und wenn etwas von CMC dabei ist Alarm schlagen, Ton und Vibrieren (mit dem MP gehts auch gut, weil wenn das Smartphone lautlos ist, klingelt es trotzdem wenn Medien an ist, so solls auch sein!!), dann soll es einen Stopp Button geben, der Sound/Vibration beendet. Mehr solls eigentlich gar nicht sein erst mal. Wie gesagt, der Inhalt der Nachricht wäre auch noch gut.
So das wars erst mal...ich hoffe mir kann da jemand helfen?
ich studiere noch Wirtschaftsinformatik, kann daher bissl Java, hätte mir das aber mit der App programmieren etwas einfacher vorgestellt, daher bräuchte ich jetzt etwas Hilfe.
Zu der App:
Ich habe eine App auf meinem Smartphone, welches mir Push-Mitteilungen schicken kann, aber ich kann dort keinen Sound oder ähnliches einstellen, außerdem ist es elementar wichtig, dass es so lange vibriert / sound abspielt bis ich es selber beende! Daher auch die App. Die App soll später noch erweitertet werden, aber erst mal soll das laufen.
Ich habe mich an dem Beispiel von kpbird entlang gehangelt...
Allerdings habe ich noch Probleme...im Prinzip funktioniert die App, also es wird die Notifikation von der App (CMC Markets) erkannt und dann startet der mp und die vibration, wenn ich dann auf den Stopp Button klicke, stoppt auch beides. Wenn ich dann die Notification aber lösche, vibriert und klingelt es erneut, kann ich aber mit dem Stopp Button wieder beenden.
Wenn ich allerdings zuerst die Push Nachricht lösche, dann startet ein "neuer" mp der sound wird überlagert jetzt kann ich mit Stopp nur einen Sound/Vibration beenden, der Rest läuft weiter...
Wenn kein Sound/Vibration abgespielt wird und ich dann auf Stopp klicke, stürzt die App ab, Fehlermeldung:
Ist unschön, aber im Prinzip nicht so wichtig mit dem abstürzen...
Dann funktioniert die App wie oben komischerweise Minuten lang und dann, wenn ich das Smartphone nicht mehr am Rechner dran habe und ein paar Stunden später geht sie nicht mehr... Auch wenn ich sie neu starte, geht nicht, wenn ich dann über Eclipse neu lade gehts komischerweise wieder...
Wenn ich per Eclispe die App aufs Smartphone lade ist die ja "drauf" oder muss ich die nochmal anders installieren auf dem Smartphone?
Gut wäre auch noch wenn ich mir ausgeben könnte, was CMC Markets da genau für eine Push-Mitteilung gesendet hat, ich seh nur, dass es von der App kommt, aber nicht den Inhalt.
Zusammengefasst: Die App soll die Notifications scannen und wenn etwas von CMC dabei ist Alarm schlagen, Ton und Vibrieren (mit dem MP gehts auch gut, weil wenn das Smartphone lautlos ist, klingelt es trotzdem wenn Medien an ist, so solls auch sein!!), dann soll es einen Stopp Button geben, der Sound/Vibration beendet. Mehr solls eigentlich gar nicht sein erst mal. Wie gesagt, der Inhalt der Nachricht wäre auch noch gut.
So das wars erst mal...ich hoffe mir kann da jemand helfen?
Code:
package pack.cmc;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Vibrator;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView txtView;
private NotificationReceiver nReceiver;
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtView = (TextView) findViewById(R.id.textView);
nReceiver = new NotificationReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.kpbird.nlsexample.NOTIFICATION_LISTENER_EXAMPLE");
registerReceiver(nReceiver,filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(nReceiver);
}
public void buttonClicked(View v){
if(v.getId() == R.id.bStopp){
Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mp.setLooping(false);
mp.reset();
vib.cancel();
}
}
class NotificationReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String temp = intent.getStringExtra("notification_event") + "n" + txtView.getText();
String erg = "cmcmarkets";
if (temp.contains(erg)) {
txtView.setText(temp);
Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = { 0, 500, 100 };
System.out.println("CMC-Alarm");
mp = MediaPlayer.create(getApplicationContext(), R.raw.sound);
mp.start();
mp.setLooping(true);
vib.vibrate(pattern, 0);
}
}
}
}
Code:
package pack.cmc;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.util.Log;
public class NLService extends NotificationListenerService {
private String TAG = this.getClass().getSimpleName();
private NLServiceReceiver nlservicereciver;
@Override
public void onCreate() {
super.onCreate();
nlservicereciver = new NLServiceReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.kpbird.nlsexample.NOTIFICATION_LISTENER_SERVICE_EXAMPLE");
registerReceiver(nlservicereciver,filter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(nlservicereciver);
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
Log.i(TAG,"********** onNotificationPosted");
Log.i(TAG,"ID :" + sbn.getId() + "t" + sbn.getNotification().tickerText + "t" + sbn.getPackageName());
Intent i = new Intent("com.kpbird.nlsexample.NOTIFICATION_LISTENER_EXAMPLE");
i.putExtra("notification_event","onNotificationPosted :" + sbn.getPackageName() + "n");
sendBroadcast(i);
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
Log.i(TAG,"********** onNOtificationRemoved");
Log.i(TAG,"ID :" + sbn.getId() + "t" + sbn.getNotification().tickerText +"t" + sbn.getPackageName());
Intent i = new Intent("com.kpbird.nlsexample.NOTIFICATION_LISTENER_EXAMPLE");
i.putExtra("notification_event","onNotificationRemoved :" + sbn.getPackageName() + "n");
sendBroadcast(i);
}
class NLServiceReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getStringExtra("command").equals("clearall")){
NLService.this.cancelAllNotifications();
}
else if(intent.getStringExtra("command").equals("list")){
Intent i1 = new Intent("com.kpbird.nlsexample.NOTIFICATION_LISTENER_EXAMPLE");
i1.putExtra("notification_event","=====================");
sendBroadcast(i1);
int i=1;
for (StatusBarNotification sbn : NLService.this.getActiveNotifications()) {
Intent i2 = new Intent("com.kpbird.nlsexample.NOTIFICATION_LISTENER_EXAMPLE");
i2.putExtra("notification_event",i +" " + sbn.getPackageName() + "n");
sendBroadcast(i2);
i++;
}
Intent i3 = new Intent("com.kpbird.nlsexample.NOTIFICATION_LISTENER_EXAMPLE");
i3.putExtra("notification_event","===== Notification List ====");
sendBroadcast(i3);
}
}
}
}
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Kein aktueller Alarm"
android:id="@+id/textView"
/>
</ScrollView>
<Button
android:id="@+id/bStopp"
android:onClick="buttonClicked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Stopp Sound" />
</RelativeLayout>
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pack.cmc"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.VIBRATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="pack.cmc.MainActivity"
android:label="@string/app_name" >
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="pack.cmc.NLService"
android:label="@string/app_name"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
</application>
</manifest>
Anhänge
-
1,5 KB Aufrufe: 631
Zuletzt bearbeitet: