This repository has been archived on 2022-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
DevOpsOpenHack/MobileApps/MyDriving/MyDriving.Android/Activities/BaseActivity.cs
2022-11-03 16:41:13 -04:00

101 lines
3.3 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for details.
using Android.OS;
using Android.Support.V7.App;
using Android.Support.V7.Widget;
using MyDriving.Droid.Helpers;
using Plugin.Permissions;
using Android.Content.PM;
using Android.Transitions;
namespace MyDriving.Droid
{
public abstract class BaseActivity : AppCompatActivity, IAccelerometerListener
{
AccelerometerManager accelerometerManager;
bool canShowFeedback;
public Toolbar Toolbar { get; set; }
protected abstract int LayoutResource { get; }
protected int ActionBarIcon
{
set { Toolbar.SetNavigationIcon(value); }
}
public void OnAccelerationChanged(float x, float y, float z)
{
}
public void OnShake(float force)
{
if (!canShowFeedback)
return;
canShowFeedback = false;
HockeyApp.FeedbackManager.ShowFeedbackActivity(this);
}
protected override void OnCreate(Bundle bundle)
{
InitActivityTransitions();
base.OnCreate(bundle);
SetContentView(LayoutResource);
Toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
if (Toolbar != null)
{
SetSupportActionBar(Toolbar);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.SetHomeButtonEnabled(true);
}
accelerometerManager = new AccelerometerManager(this, this);
accelerometerManager.Configure(40, 350);
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
protected override void OnResume()
{
base.OnResume();
canShowFeedback = true;
if (accelerometerManager.IsSupported)
accelerometerManager.StartListening();
}
void InitActivityTransitions()
{
if ((int) Build.VERSION.SdkInt >= 21)
{
var transition = new Slide();
transition.ExcludeTarget(Android.Resource.Id.StatusBarBackground, true);
Window.EnterTransition = transition;
Window.ReturnTransition = transition;
Window.RequestFeature(Android.Views.WindowFeatures.ContentTransitions);
Window.RequestFeature(Android.Views.WindowFeatures.ActivityTransitions);
Window.SharedElementEnterTransition = new ChangeBounds();
Window.SharedElementReturnTransition = new ChangeBounds();
Window.AllowEnterTransitionOverlap = true;
Window.AllowReturnTransitionOverlap = true;
}
}
protected override void OnStop()
{
base.OnStop();
if (accelerometerManager.IsListening)
accelerometerManager.StopListening();
}
protected override void OnDestroy()
{
base.OnDestroy();
if (accelerometerManager.IsListening)
accelerometerManager.StopListening();
}
}
}