Skip to content

Commit

Permalink
add support for media button for android 3.0 and later
Browse files Browse the repository at this point in the history
  • Loading branch information
zdila committed Dec 15, 2014
1 parent 3453157 commit 981a810
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 6 deletions.
8 changes: 7 additions & 1 deletion AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="me.guillaumin.android.osmtracker"
android:versionName="0.6.6" android:versionCode="30" android:installLocation="auto">

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16"/>
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Expand Down Expand Up @@ -45,6 +45,12 @@
android:authorities="me.guillaumin.android.osmtracker.provider"
android:exported="false" />

<receiver android:name=".receiver.MediaButtonReceiver" >
<intent-filter android:priority="10000" >
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>

</application>

</manifest>
29 changes: 24 additions & 5 deletions src/me/guillaumin/android/osmtracker/activity/TrackLogger.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package me.guillaumin.android.osmtracker.activity;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import me.guillaumin.android.osmtracker.OSMTracker;
Expand All @@ -11,6 +10,7 @@
import me.guillaumin.android.osmtracker.layout.GpsStatusRecord;
import me.guillaumin.android.osmtracker.layout.UserDefinedLayout;
import me.guillaumin.android.osmtracker.listener.SensorListener;
import me.guillaumin.android.osmtracker.receiver.MediaButtonReceiver;
import me.guillaumin.android.osmtracker.service.gps.GPSLogger;
import me.guillaumin.android.osmtracker.service.gps.GPSLoggerServiceConnection;
import me.guillaumin.android.osmtracker.util.FileSystemUtils;
Expand All @@ -20,20 +20,23 @@
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.database.Cursor;
import android.location.LocationManager;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.provider.Settings;
import android.provider.MediaStore.Images.ImageColumns;
import android.provider.Settings;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
Expand Down Expand Up @@ -137,6 +140,10 @@ public class TrackLogger extends Activity {
* sensor listener for the azimuth display
*/
private SensorListener sensorListener;

private AudioManager mAudioManager;

private ComponentName mediaButtonReceiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down Expand Up @@ -172,6 +179,9 @@ protected void onCreate(Bundle savedInstanceState) {

// create sensor listener
sensorListener = new SensorListener();

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mediaButtonReceiver = new ComponentName(this, MediaButtonReceiver.class.getName());
}

@Override
Expand Down Expand Up @@ -247,6 +257,8 @@ protected void onResume() {
Toast.makeText(this, R.string.tracklogger_waiting_gps, Toast.LENGTH_LONG).show();
}

mAudioManager.registerMediaButtonEventReceiver(mediaButtonReceiver);

super.onResume();
}

Expand Down Expand Up @@ -293,6 +305,8 @@ protected void onPause() {
sensorListener.unregister();
}

mAudioManager.unregisterMediaButtonEventReceiver(mediaButtonReceiver);

super.onPause();
}

Expand Down Expand Up @@ -602,9 +616,14 @@ protected void onPrepareDialog(int id, Dialog dialog) {

@Override
protected void onNewIntent(Intent newIntent) {
if (newIntent.getExtras() != null && newIntent.getExtras().containsKey(Schema.COL_TRACK_ID)) {
currentTrackId = newIntent.getExtras().getLong(Schema.COL_TRACK_ID);
setIntent(newIntent);
if (newIntent.getExtras() != null) {
if (newIntent.getExtras().containsKey(Schema.COL_TRACK_ID)) {
currentTrackId = newIntent.getExtras().getLong(Schema.COL_TRACK_ID);
setIntent(newIntent);
}
if (newIntent.hasExtra("mediaButton") && gpsLogger != null && gpsLogger.isTracking()) {
this.showDialog(DIALOG_VOICE_RECORDING);
}
}
super.onNewIntent(newIntent);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package me.guillaumin.android.osmtracker.receiver;

import me.guillaumin.android.osmtracker.activity.TrackLogger;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MediaButtonReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Intent intent2 = new Intent(context, TrackLogger.class);
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent2.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent2.putExtra("mediaButton", Boolean.TRUE));
}

}

0 comments on commit 981a810

Please sign in to comment.