def configure_logging(config): verbosity = config.get('verbosity') verbosity_shortcuts = config.get('verbosity_shortcuts') _configure_verbosity(verbosity=verbosity, verbosity_shortcuts=verbosity_shortcuts) log_to_file = config.get('log_to_file', False) is_android = 'ANDROID_DATA' in os.environ if is_android: from jnius import autoclass from plyer.platforms.android import activity package_name = activity.getPackageName().lower() build_config = autoclass(f'{package_name}.BuildConfig') log_to_file |= bool(build_config.DEBUG) if log_to_file: log_directory = pathlib.Path(config.path) / "logs" _configure_file_logging(log_directory) # if using kivy, avoid kivy's own logs to get printed twice logging.getLogger('kivy').propagate = False from . import ELECTRUM_VERSION from .constants import GIT_REPO_URL _logger.info(f"Dash Electrum version: {ELECTRUM_VERSION} - " f"https://electrum.dash.org - {GIT_REPO_URL}") _logger.info( f"Python version: {sys.version}. On platform: {describe_os_version()}") _logger.info(f"Logging to file: {str(_logfile_path)}") _logger.info( f"Log filters: verbosity {repr(verbosity)}, verbosity_shortcuts {repr(verbosity_shortcuts)}" )
def android_backup_dir(): from plyer.platforms.android import activity package_name = activity.getPackageName().lower() d = os.path.join(android_ext_dir(), package_name) if not os.path.exists(d): os.mkdir(d) return d
def _start(self): intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH) intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, activity.getPackageName()) # language preferences intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, self.language) intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH) # results settings intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1000) intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, True) if self.prefer_offline: intent.putExtra(RecognizerIntent.EXTRA_PREFER_OFFLINE, True) # listener and callbacks listener = SpeechListener() listener.error_callback = self._on_error listener.result_callback = self._on_result listener.partial_result_callback = self._on_partial # create recognizer and start self.speech = SpeechRecognizer.createSpeechRecognizer(activity) self.speech.setRecognitionListener(listener) self.speech.startListening(intent)
def runGeneric(self, what, pidid): if self.isRunning(pidid): print("Skip starting %s, already running as %s" % (what, self.getPid(pidid))) return False service_fullname = activity.getPackageName() + '.Service' + what service = autoclass(service_fullname) argument = "" service.start(mActivity, argument)
def configure_logging(config): verbosity = config.get('verbosity') verbosity_shortcuts = config.get('verbosity_shortcuts') _configure_stderr_logging(verbosity=verbosity, verbosity_shortcuts=verbosity_shortcuts) log_to_file = config.get('log_to_file', False) is_android = 'ANDROID_DATA' in os.environ if is_android: from jnius import autoclass from plyer.platforms.android import activity package_name = activity.getPackageName().lower() build_config = autoclass(f'{package_name}.BuildConfig') log_to_file |= bool(build_config.DEBUG) if log_to_file: log_directory = pathlib.Path(config.path) / "logs" _configure_file_logging(log_directory) # clean up and delete in-memory logs global _inmemory_startup_logs if _inmemory_startup_logs: num_discarded = _inmemory_startup_logs.num_messages_seen - _inmemory_startup_logs.max_size if num_discarded > 0: _logger.warning( f"Too many log messages! Some have been discarded. " f"(discarded {num_discarded} messages)") _inmemory_startup_logs.close() root_logger.removeHandler(_inmemory_startup_logs) _inmemory_startup_logs = None # if using kivy, avoid kivy's own logs to get printed twice logging.getLogger('kivy').propagate = False from . import ELECTRUM_VERSION from .constants import GIT_REPO_URL _logger.info(f"Firo Electrum version: {ELECTRUM_VERSION} - " f"https://electrum.dash.org - {GIT_REPO_URL}") _logger.info( f"Python version: {sys.version}. On platform: {describe_os_version()}") _logger.info(f"Logging to file: {str(_logfile_path)}") _logger.info( f"Log filters: verbosity {repr(verbosity)}, verbosity_shortcuts {repr(verbosity_shortcuts)}" )
from jnius import autoclass from plyer.facades import Notification from plyer.platforms.android import activity AndroidString = autoclass('java.lang.String') Context = autoclass('android.content.Context') NotificationBuilder = autoclass('android.app.Notification$Builder') Drawable = autoclass("{}.R$drawable".format(activity.getPackageName())) class AndroidNotification(Notification): def _get_notification_service(self): if not hasattr(self, '_ns'): self._ns = activity.getSystemService(Context.NOTIFICATION_SERVICE) return self._ns def _notify(self, **kwargs): icon = getattr(Drawable, kwargs.get('icon_android', 'icon')) noti = NotificationBuilder(activity) #noti.setDefaults(Notification.DEFAULT_ALL) noti.setContentTitle(AndroidString( kwargs.get('title').encode('utf-8'))) noti.setContentText( AndroidString(kwargs.get('message').encode('utf-8'))) noti.setSmallIcon(icon) noti.setAutoCancel(True) self._get_notification_service().notify(0, noti.build()) def instance(): return AndroidNotification()
def __init__(self): self._ns = None self._channel_id = activity.getPackageName()
def getDebug(): return autoclass(activity.getPackageName() + ".BuildConfig").DEBUG
import os from os.path import dirname, realpath from kivy.utils import platform from adventureskiing.Database.MySQL.db_commands import SqlCommands if platform == 'android': from common_alarms.android_alarm import AlarmManager from plyer.platforms.android import activity from common_notifications.android_notification import AndroidNotification as notifier notification_event = '{}.NOTIFICATION_ALARM'.format( activity.getPackageName()) class NotificationManager(object): def __init__(self, session_id): super(NotificationManager, self).__init__() self.session_id = session_id self.alarm_manager = AlarmManager(notification_event) self.notifier = notifier() def dispatch_incoming_notifications(self, *args): notifications = SqlCommands.get_notifications(self.session_id) for data, godzina, ilosc_os, operacja in notifications: message, ticker = self.get_message_ticker(data, godzina, ilosc_os, operacja) icon_path = os.path.join(dirname(dirname(realpath(__file__))), 'adventureskiing', 'graphics', 'logo.png') self.notifier.notify(title=ticker, message=message, app_name='ASy', app_icon=icon_path,
from jnius import autoclass from plyer.facades import Notification from plyer.platforms.android import activity AndroidString = autoclass('java.lang.String') Context = autoclass('android.content.Context') NotificationBuilder = autoclass('android.app.Notification$Builder') Drawable = autoclass("{}.R$drawable".format(activity.getPackageName())) class AndroidNotification(Notification): def _get_notification_service(self): if not hasattr(self, '_ns'): self._ns = activity.getSystemService(Context.NOTIFICATION_SERVICE) return self._ns def _notify(self, **kwargs): icon = getattr(Drawable, kwargs.get('icon_android', 'icon')) noti = NotificationBuilder(activity) #noti.setDefaults(Notification.DEFAULT_ALL) noti.setContentTitle(AndroidString( kwargs.get('title').encode('utf-8'))) noti.setContentText(AndroidString( kwargs.get('message').encode('utf-8'))) noti.setSmallIcon(icon) noti.setAutoCancel(True) if hasattr(noti, 'build'): # API >= 16 self._get_notification_service().notify(0, noti.build()) elif hasattr(noti, 'getNotification'): # API >= 11 and API < 16
def __init__(self, service_name, arg): self.service = autoclass(activity.getPackageName() + '.Service' + service_name.capitalize()) self.arg = arg