Altbeacon: disable Foreground mode and Terminate app from Notifcation AddAction
I'm recently trying to build an application that uses AltBeacon Library.
The problem that I'm facing right now is this: I created an Application class in this way:
beaconManager = beaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().clear();
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
beaconManager.setRegionStatePersistenceEnabled(false);
Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.drawable.icon);
builder.setBadgeIconType(Notification.BADGE_ICON_NONE);
Intent buttonIntent = new Intent(getApplicationContext(), ButtonReceiver.class);
buttonIntent.putExtra("notificationId",NOTIFICATION_ID);
PendingIntent btPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, buttonIntent,0);
builder.addAction(R.drawable.stop,"Termina Rilevamento.", btPendingIntent);
builder.setColor(getResources().getColor(R.color.mygreen));
builder.setContentIntent(btPendingIntent);
builder.setPriority(Notification.PRIORITY_MAX);
builder.setContentTitle("Rilevazione autenticazione in corso.");
Intent intent = new Intent(this, LoginActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(pendingIntent);
NotificationChannel channel = new NotificationChannel("My Notification Channel ID",
"My Notification Name", NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("My Notification Channel Description");
NotificationManager notificationManager = (NotificationManager) getSystemService(
Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
builder.setChannelId(channel.getId());
beaconManager.enableForegroundServiceScanning(builder.build(), 456);
beaconManager.setEnableScheduledScanJobs(false);
beaconManager.setBackgroundBetweenScanPeriod(0);
beaconManager.setBackgroundScanPeriod(1100);
Region region = new Region("Region iniziale",null,Identifier.parse("789"),null);
regionBootstrap = new RegionBootstrap(this, region);
backgroundPowerSaver = new BackgroundPowerSaver(this);
Where the Button on the notification points to a BroadCastReceiver class that is ButtonReceiver.
In button receiver I want to execute the action of disabling the foreground service and to close out the application.
I do it in this way:
int notificationId = intent.getIntExtra("notificationId", 0);
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(notificationId);
AndroidWalkEnrollmentApplication prova = new AndroidWalkEnrollmentApplication();
prova.disableMonitoring();
inside the onReceive() method.
So the problem is this: in disableMonitoring() I follow the example of the Android-Beacon-Reference and so to disable the foreground scanning I do:
bootstrap.disable() and bootstrap=null. The problem is that it seems to not work. When I press the button inside the notification the foreground mode it's note disabled. I also tried to execute Beaconmanager.disableForegroundService() but it doesn't actually disable it.
Any clue?
add a comment |
I'm recently trying to build an application that uses AltBeacon Library.
The problem that I'm facing right now is this: I created an Application class in this way:
beaconManager = beaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().clear();
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
beaconManager.setRegionStatePersistenceEnabled(false);
Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.drawable.icon);
builder.setBadgeIconType(Notification.BADGE_ICON_NONE);
Intent buttonIntent = new Intent(getApplicationContext(), ButtonReceiver.class);
buttonIntent.putExtra("notificationId",NOTIFICATION_ID);
PendingIntent btPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, buttonIntent,0);
builder.addAction(R.drawable.stop,"Termina Rilevamento.", btPendingIntent);
builder.setColor(getResources().getColor(R.color.mygreen));
builder.setContentIntent(btPendingIntent);
builder.setPriority(Notification.PRIORITY_MAX);
builder.setContentTitle("Rilevazione autenticazione in corso.");
Intent intent = new Intent(this, LoginActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(pendingIntent);
NotificationChannel channel = new NotificationChannel("My Notification Channel ID",
"My Notification Name", NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("My Notification Channel Description");
NotificationManager notificationManager = (NotificationManager) getSystemService(
Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
builder.setChannelId(channel.getId());
beaconManager.enableForegroundServiceScanning(builder.build(), 456);
beaconManager.setEnableScheduledScanJobs(false);
beaconManager.setBackgroundBetweenScanPeriod(0);
beaconManager.setBackgroundScanPeriod(1100);
Region region = new Region("Region iniziale",null,Identifier.parse("789"),null);
regionBootstrap = new RegionBootstrap(this, region);
backgroundPowerSaver = new BackgroundPowerSaver(this);
Where the Button on the notification points to a BroadCastReceiver class that is ButtonReceiver.
In button receiver I want to execute the action of disabling the foreground service and to close out the application.
I do it in this way:
int notificationId = intent.getIntExtra("notificationId", 0);
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(notificationId);
AndroidWalkEnrollmentApplication prova = new AndroidWalkEnrollmentApplication();
prova.disableMonitoring();
inside the onReceive() method.
So the problem is this: in disableMonitoring() I follow the example of the Android-Beacon-Reference and so to disable the foreground scanning I do:
bootstrap.disable() and bootstrap=null. The problem is that it seems to not work. When I press the button inside the notification the foreground mode it's note disabled. I also tried to execute Beaconmanager.disableForegroundService() but it doesn't actually disable it.
Any clue?
add a comment |
I'm recently trying to build an application that uses AltBeacon Library.
The problem that I'm facing right now is this: I created an Application class in this way:
beaconManager = beaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().clear();
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
beaconManager.setRegionStatePersistenceEnabled(false);
Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.drawable.icon);
builder.setBadgeIconType(Notification.BADGE_ICON_NONE);
Intent buttonIntent = new Intent(getApplicationContext(), ButtonReceiver.class);
buttonIntent.putExtra("notificationId",NOTIFICATION_ID);
PendingIntent btPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, buttonIntent,0);
builder.addAction(R.drawable.stop,"Termina Rilevamento.", btPendingIntent);
builder.setColor(getResources().getColor(R.color.mygreen));
builder.setContentIntent(btPendingIntent);
builder.setPriority(Notification.PRIORITY_MAX);
builder.setContentTitle("Rilevazione autenticazione in corso.");
Intent intent = new Intent(this, LoginActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(pendingIntent);
NotificationChannel channel = new NotificationChannel("My Notification Channel ID",
"My Notification Name", NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("My Notification Channel Description");
NotificationManager notificationManager = (NotificationManager) getSystemService(
Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
builder.setChannelId(channel.getId());
beaconManager.enableForegroundServiceScanning(builder.build(), 456);
beaconManager.setEnableScheduledScanJobs(false);
beaconManager.setBackgroundBetweenScanPeriod(0);
beaconManager.setBackgroundScanPeriod(1100);
Region region = new Region("Region iniziale",null,Identifier.parse("789"),null);
regionBootstrap = new RegionBootstrap(this, region);
backgroundPowerSaver = new BackgroundPowerSaver(this);
Where the Button on the notification points to a BroadCastReceiver class that is ButtonReceiver.
In button receiver I want to execute the action of disabling the foreground service and to close out the application.
I do it in this way:
int notificationId = intent.getIntExtra("notificationId", 0);
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(notificationId);
AndroidWalkEnrollmentApplication prova = new AndroidWalkEnrollmentApplication();
prova.disableMonitoring();
inside the onReceive() method.
So the problem is this: in disableMonitoring() I follow the example of the Android-Beacon-Reference and so to disable the foreground scanning I do:
bootstrap.disable() and bootstrap=null. The problem is that it seems to not work. When I press the button inside the notification the foreground mode it's note disabled. I also tried to execute Beaconmanager.disableForegroundService() but it doesn't actually disable it.
Any clue?
I'm recently trying to build an application that uses AltBeacon Library.
The problem that I'm facing right now is this: I created an Application class in this way:
beaconManager = beaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().clear();
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
beaconManager.setRegionStatePersistenceEnabled(false);
Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.drawable.icon);
builder.setBadgeIconType(Notification.BADGE_ICON_NONE);
Intent buttonIntent = new Intent(getApplicationContext(), ButtonReceiver.class);
buttonIntent.putExtra("notificationId",NOTIFICATION_ID);
PendingIntent btPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, buttonIntent,0);
builder.addAction(R.drawable.stop,"Termina Rilevamento.", btPendingIntent);
builder.setColor(getResources().getColor(R.color.mygreen));
builder.setContentIntent(btPendingIntent);
builder.setPriority(Notification.PRIORITY_MAX);
builder.setContentTitle("Rilevazione autenticazione in corso.");
Intent intent = new Intent(this, LoginActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(pendingIntent);
NotificationChannel channel = new NotificationChannel("My Notification Channel ID",
"My Notification Name", NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("My Notification Channel Description");
NotificationManager notificationManager = (NotificationManager) getSystemService(
Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);
builder.setChannelId(channel.getId());
beaconManager.enableForegroundServiceScanning(builder.build(), 456);
beaconManager.setEnableScheduledScanJobs(false);
beaconManager.setBackgroundBetweenScanPeriod(0);
beaconManager.setBackgroundScanPeriod(1100);
Region region = new Region("Region iniziale",null,Identifier.parse("789"),null);
regionBootstrap = new RegionBootstrap(this, region);
backgroundPowerSaver = new BackgroundPowerSaver(this);
Where the Button on the notification points to a BroadCastReceiver class that is ButtonReceiver.
In button receiver I want to execute the action of disabling the foreground service and to close out the application.
I do it in this way:
int notificationId = intent.getIntExtra("notificationId", 0);
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(notificationId);
AndroidWalkEnrollmentApplication prova = new AndroidWalkEnrollmentApplication();
prova.disableMonitoring();
inside the onReceive() method.
So the problem is this: in disableMonitoring() I follow the example of the Android-Beacon-Reference and so to disable the foreground scanning I do:
bootstrap.disable() and bootstrap=null. The problem is that it seems to not work. When I press the button inside the notification the foreground mode it's note disabled. I also tried to execute Beaconmanager.disableForegroundService() but it doesn't actually disable it.
Any clue?
edited Nov 13 '18 at 16:21
Andrea Chinellato
asked Nov 13 '18 at 15:44
Andrea ChinellatoAndrea Chinellato
62
62
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
There is a bug in the 2.15.2 release of the library that prevents stopping the foreground service properly. But good news: this has been very recently fixed in this experimental release:
https://github.com/AltBeacon/android-beacon-library/releases/tag/more-reliable-service-stop2
You may use the above fix immediatly by following the integration instructions on the release. This change will also be included in a formal release in 1-2 weeks.
Thanks a lot for the reply! I will try this solution out!
– Andrea Chinellato
Nov 13 '18 at 17:21
Hey! I saw that the change was included in the formal release! What should the command to stop the foreground scanning and to close the application be, to include it in the notification addAction? I'd like to do it in an elegant way that doesn't crash it.
– Andrea Chinellato
Nov 22 '18 at 13:12
The formal release is not yet out as of this post, but to stop the foreground service you simply call regionBootstrap.diaable(); or beaconManager.unbind(this); depending on which class you used to start the sccanning.
– davidgyoung
Nov 22 '18 at 17:19
I implemented these methods but I keep getting my app restarted after like 5 minutes? Do you have any idea of what it could be?
– Andrea Chinellato
Nov 23 '18 at 22:30
Please open a new question with the specifics. Comments do not give room to answer.
– davidgyoung
Nov 24 '18 at 2:48
|
show 1 more comment
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53284595%2faltbeacon-disable-foreground-mode-and-terminate-app-from-notifcation-addaction%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
There is a bug in the 2.15.2 release of the library that prevents stopping the foreground service properly. But good news: this has been very recently fixed in this experimental release:
https://github.com/AltBeacon/android-beacon-library/releases/tag/more-reliable-service-stop2
You may use the above fix immediatly by following the integration instructions on the release. This change will also be included in a formal release in 1-2 weeks.
Thanks a lot for the reply! I will try this solution out!
– Andrea Chinellato
Nov 13 '18 at 17:21
Hey! I saw that the change was included in the formal release! What should the command to stop the foreground scanning and to close the application be, to include it in the notification addAction? I'd like to do it in an elegant way that doesn't crash it.
– Andrea Chinellato
Nov 22 '18 at 13:12
The formal release is not yet out as of this post, but to stop the foreground service you simply call regionBootstrap.diaable(); or beaconManager.unbind(this); depending on which class you used to start the sccanning.
– davidgyoung
Nov 22 '18 at 17:19
I implemented these methods but I keep getting my app restarted after like 5 minutes? Do you have any idea of what it could be?
– Andrea Chinellato
Nov 23 '18 at 22:30
Please open a new question with the specifics. Comments do not give room to answer.
– davidgyoung
Nov 24 '18 at 2:48
|
show 1 more comment
There is a bug in the 2.15.2 release of the library that prevents stopping the foreground service properly. But good news: this has been very recently fixed in this experimental release:
https://github.com/AltBeacon/android-beacon-library/releases/tag/more-reliable-service-stop2
You may use the above fix immediatly by following the integration instructions on the release. This change will also be included in a formal release in 1-2 weeks.
Thanks a lot for the reply! I will try this solution out!
– Andrea Chinellato
Nov 13 '18 at 17:21
Hey! I saw that the change was included in the formal release! What should the command to stop the foreground scanning and to close the application be, to include it in the notification addAction? I'd like to do it in an elegant way that doesn't crash it.
– Andrea Chinellato
Nov 22 '18 at 13:12
The formal release is not yet out as of this post, but to stop the foreground service you simply call regionBootstrap.diaable(); or beaconManager.unbind(this); depending on which class you used to start the sccanning.
– davidgyoung
Nov 22 '18 at 17:19
I implemented these methods but I keep getting my app restarted after like 5 minutes? Do you have any idea of what it could be?
– Andrea Chinellato
Nov 23 '18 at 22:30
Please open a new question with the specifics. Comments do not give room to answer.
– davidgyoung
Nov 24 '18 at 2:48
|
show 1 more comment
There is a bug in the 2.15.2 release of the library that prevents stopping the foreground service properly. But good news: this has been very recently fixed in this experimental release:
https://github.com/AltBeacon/android-beacon-library/releases/tag/more-reliable-service-stop2
You may use the above fix immediatly by following the integration instructions on the release. This change will also be included in a formal release in 1-2 weeks.
There is a bug in the 2.15.2 release of the library that prevents stopping the foreground service properly. But good news: this has been very recently fixed in this experimental release:
https://github.com/AltBeacon/android-beacon-library/releases/tag/more-reliable-service-stop2
You may use the above fix immediatly by following the integration instructions on the release. This change will also be included in a formal release in 1-2 weeks.
edited Nov 13 '18 at 21:24
answered Nov 13 '18 at 16:45
davidgyoungdavidgyoung
49.2k1079140
49.2k1079140
Thanks a lot for the reply! I will try this solution out!
– Andrea Chinellato
Nov 13 '18 at 17:21
Hey! I saw that the change was included in the formal release! What should the command to stop the foreground scanning and to close the application be, to include it in the notification addAction? I'd like to do it in an elegant way that doesn't crash it.
– Andrea Chinellato
Nov 22 '18 at 13:12
The formal release is not yet out as of this post, but to stop the foreground service you simply call regionBootstrap.diaable(); or beaconManager.unbind(this); depending on which class you used to start the sccanning.
– davidgyoung
Nov 22 '18 at 17:19
I implemented these methods but I keep getting my app restarted after like 5 minutes? Do you have any idea of what it could be?
– Andrea Chinellato
Nov 23 '18 at 22:30
Please open a new question with the specifics. Comments do not give room to answer.
– davidgyoung
Nov 24 '18 at 2:48
|
show 1 more comment
Thanks a lot for the reply! I will try this solution out!
– Andrea Chinellato
Nov 13 '18 at 17:21
Hey! I saw that the change was included in the formal release! What should the command to stop the foreground scanning and to close the application be, to include it in the notification addAction? I'd like to do it in an elegant way that doesn't crash it.
– Andrea Chinellato
Nov 22 '18 at 13:12
The formal release is not yet out as of this post, but to stop the foreground service you simply call regionBootstrap.diaable(); or beaconManager.unbind(this); depending on which class you used to start the sccanning.
– davidgyoung
Nov 22 '18 at 17:19
I implemented these methods but I keep getting my app restarted after like 5 minutes? Do you have any idea of what it could be?
– Andrea Chinellato
Nov 23 '18 at 22:30
Please open a new question with the specifics. Comments do not give room to answer.
– davidgyoung
Nov 24 '18 at 2:48
Thanks a lot for the reply! I will try this solution out!
– Andrea Chinellato
Nov 13 '18 at 17:21
Thanks a lot for the reply! I will try this solution out!
– Andrea Chinellato
Nov 13 '18 at 17:21
Hey! I saw that the change was included in the formal release! What should the command to stop the foreground scanning and to close the application be, to include it in the notification addAction? I'd like to do it in an elegant way that doesn't crash it.
– Andrea Chinellato
Nov 22 '18 at 13:12
Hey! I saw that the change was included in the formal release! What should the command to stop the foreground scanning and to close the application be, to include it in the notification addAction? I'd like to do it in an elegant way that doesn't crash it.
– Andrea Chinellato
Nov 22 '18 at 13:12
The formal release is not yet out as of this post, but to stop the foreground service you simply call regionBootstrap.diaable(); or beaconManager.unbind(this); depending on which class you used to start the sccanning.
– davidgyoung
Nov 22 '18 at 17:19
The formal release is not yet out as of this post, but to stop the foreground service you simply call regionBootstrap.diaable(); or beaconManager.unbind(this); depending on which class you used to start the sccanning.
– davidgyoung
Nov 22 '18 at 17:19
I implemented these methods but I keep getting my app restarted after like 5 minutes? Do you have any idea of what it could be?
– Andrea Chinellato
Nov 23 '18 at 22:30
I implemented these methods but I keep getting my app restarted after like 5 minutes? Do you have any idea of what it could be?
– Andrea Chinellato
Nov 23 '18 at 22:30
Please open a new question with the specifics. Comments do not give room to answer.
– davidgyoung
Nov 24 '18 at 2:48
Please open a new question with the specifics. Comments do not give room to answer.
– davidgyoung
Nov 24 '18 at 2:48
|
show 1 more comment
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53284595%2faltbeacon-disable-foreground-mode-and-terminate-app-from-notifcation-addaction%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown