Сравнить коммиты

...
125 Коммитов
Автор SHA1 Сообщение Дата
Anton Tananaev fe4e798eb8 Update app version number 2017-01-15 17:25:02 +13:00
Anton Tananaev 8b72fd5522 Update localization files 2017-01-15 17:24:14 +13:00
Anton Tananaev 4a8b66694c Implement alarm shortcut (fix #244) 2017-01-15 17:16:41 +13:00
Anton Tananaev c717da9c6a Increase wake lock timeout 2017-01-15 16:33:52 +13:00
Anton Tananaev 969cbc6cf4 Update developer tools and SDK 2017-01-15 16:25:57 +13:00
Anton Tananaev a04689350a Update readme file 2016-10-22 14:14:22 +13:00
Anton Tananaev 87e798b459 Update gitignore file 2016-10-10 23:22:12 +13:00
Anton Tananaev 5a99be4005 Update to version 3.12 2016-10-02 11:49:12 +13:00
Anton Tananaev 255598b7e8 Support longer time interval 2016-10-02 11:40:15 +13:00
Anton Tananaev 6c29113278 Update gradle and android plugin 2016-10-02 11:30:15 +13:00
Anton Tananaev a861b71d02 Upload full license file 2016-09-23 03:10:35 +12:00
Anton Tananaev 370e9778b4 Add license file to the project 2016-09-22 17:55:52 +12:00
Anton Tananaev efdaf69d07 Remove unused class import 2016-09-01 02:28:35 +12:00
Anton Tananaev 3dbdaeb555 Handle missing GPS provider 2016-09-01 02:15:05 +12:00
Anton Tananaev 806a31cd92 Avoid index out of bounds 2016-09-01 02:05:20 +12:00
Anton Tananaev fa4654c969 Avoid uninitialized provider type 2016-09-01 01:56:17 +12:00
Anton Tananaev 624eefc309 Increase keep alive for connections 2016-07-29 11:23:44 +12:00
Anton Tananaev 7ab99da14c Fix protocol formatter unit test 2016-07-24 12:50:42 +12:00
Anton Tananaev 532a1f4249 Merge pull request #211 from mwild1/master
Add support for posting locations over HTTPS
2016-07-24 12:46:39 +12:00
Matthew Wild c3986ac172 Add support for posting locations over HTTPS 2016-07-22 21:27:15 +01:00
Anton Tananaev fae01757b6 Add gradle wrapper for Windows 2016-07-07 00:30:09 +12:00
Anton Tananaev 4f1af00383 Update project gradle files 2016-06-19 15:23:30 +12:00
Anton Tananaev 4c4192394f Add Google Play link to readme 2016-05-08 13:48:55 +12:00
Anton Tananaev 3d602aaf16 Update app version to 3.11 2016-04-29 10:33:43 +12:00
Anton Tananaev acf935dcfd Fix crash on second app start 2016-04-29 10:26:05 +12:00
Anton Tananaev bb49b11bf4 Disable lint check for release builds 2016-04-27 22:33:31 +12:00
Anton Tananaev b72b7dfa6f Update all language translations 2016-04-27 22:26:07 +12:00
Anton Tananaev c4d4e9ff40 Update all app project files 2016-04-27 22:20:45 +12:00
Anton Tananaev bcfa577e91 Set up Alarm to wake service (fix #175) 2016-04-27 22:08:16 +12:00
Anton Tananaev ac1ca8df2f Limit number of location updates (fix #156) 2016-04-27 22:07:15 +12:00
Anton Tananaev e0dfc8fe66 Update git ignore file rules 2016-04-27 22:06:07 +12:00
Anton Tananaev 7dc7f32110 Fix issue with shortcuts on hidden app 2016-04-23 15:08:17 +12:00
Anton Tananaev 6bffc7bbc1 Add transifex localization script 2016-04-10 00:57:20 +12:00
Anton Tananaev aaa6092501 Add Lao localization to the app 2016-04-10 00:55:18 +12:00
Anton Tananaev 8cd3601a4f Move string array to values xml 2016-04-09 23:59:58 +12:00
Anton Tananaev 088adcaa24 Release version 3.9 of the app 2016-02-20 17:20:44 +13:00
Anton Tananaev 0365837e4d Use full name in manifest file 2016-02-04 23:21:36 +11:00
Anton Tananaev f952e16c00 Application version 3.8 release 2016-01-30 10:31:05 +13:00
Anton Tananaev b7fb6445ef Implement application shortcuts (fix #161) 2016-01-30 10:17:30 +13:00
Anton Tananaev bc3f47e296 Remove position if deviceId is different 2016-01-29 22:11:32 +13:00
Anton Tananaev c60f749a67 Catch missing permissions exception 2016-01-29 22:05:47 +13:00
Anton Tananaev 821f24ce2b Implement app settings validation 2016-01-29 22:01:02 +13:00
Anton Tananaev 62c713e97a Update launcher icon and logo image 2016-01-29 20:24:37 +13:00
Anton Tananaev ab587d465e Merge pull request #173 from DrumSergio/patch-1
Minimal fault on translation
2015-12-31 08:10:51 +13:00
DrumSergio f82e89409d minimal fault on translation 2015-12-30 17:38:27 +01:00
Anton Tananaev 7e6d4f5822 Add Italian app localization file 2015-12-13 11:27:18 +13:00
Anton Tananaev b8a099189e Fix hidden app component name 2015-11-03 10:49:48 +13:00
Anton Tananaev e961df85d5 Use different application ids 2015-10-19 10:19:39 +13:00
Anton Tananaev 44648cf142 Workaround for 2.3 wakelock bug 2015-10-06 23:10:40 +13:00
Anton Tananaev d916bf432e Add shadow to launcher icon 2015-09-19 22:27:20 +12:00
Anton Tananaev 09a62e639e Update build tools and version 2015-09-13 15:01:15 +12:00
Anton Tananaev d1912bd430 Fix gradle build app signing 2015-09-03 23:10:09 +12:00
Anton Tananaev 052320f981 Always generate device identifier 2015-09-03 23:04:02 +12:00
Anton Tananaev 140a3ebece Hide the app from launcher 2015-09-03 15:16:20 +12:00
Anton Tananaev 603e7bb3e0 Change hidden app title 2015-09-03 14:38:26 +12:00
Anton Tananaev f81db810ff Create hidden app variant 2015-09-03 14:30:05 +12:00
Anton Tananaev 1ca71f80c6 Properly stop secondary service 2015-09-03 11:54:20 +12:00
Anton Tananaev 5d101b6f6e Hack to hide a notification 2015-09-03 11:47:14 +12:00
Anton Tananaev dc949e0152 Handle permissions on old Android 2015-09-03 10:40:24 +12:00
Anton Tananaev 96d9127a4a Move launcher icons to mipmap 2015-09-03 10:31:16 +12:00
Anton Tananaev 2194290935 Refactor permissions handling 2015-09-03 10:10:39 +12:00
Anton Tananaev 78bf7f3169 Implement permission requesting 2015-09-02 23:17:40 +12:00
Anton Tananaev e2d0329635 Call missing method via reflection 2015-09-02 19:28:47 +12:00
Anton Tananaev a64da65c6f Add more status messages (fix #151) 2015-08-29 21:44:12 +12:00
Anton Tananaev 8a3d86c173 Get address and port once 2015-08-29 21:32:11 +12:00
Anton Tananaev c78cac2da5 Combine two callbacks into one 2015-08-24 12:15:52 +12:00
Anton Tananaev 5f7a1a8bfd Use single quotes in gradle 2015-08-23 20:11:39 +12:00
Anton Tananaev 16f743e90a Merge pull request #147 from redge76/startforeground
Move startForeground function to the onCreate
2015-08-23 12:11:21 +12:00
Anton Tananaev 429dda1e37 Merge pull request #148 from redge76/singletask
Set the main activity as singleTask
2015-08-23 12:07:18 +12:00
redge 0ac173c043 Set the main activity as singTask so that when you press the notification multiple time, it starts it only once.
Explained here http://stackoverflow.com/a/29847821
2015-08-22 02:26:14 +02:00
redge 9ae90d2edc Move startForeground to onCreate 2015-08-22 01:50:17 +02:00
Anton Tananaev 27a99a6af1 Remove service notification icon 2015-08-21 10:15:03 +12:00
Anton Tananaev 5ac0610bd5 App version 3.5 release 2015-08-20 23:32:33 +12:00
Anton Tananaev b109de92c4 Do not show dialog if correct port 2015-08-20 16:08:57 +12:00
Anton Tananaev be0d556ed6 Re-implement mixed provider (fix #145) 2015-08-20 12:25:26 +12:00
Anton Tananaev 1861d9ca34 Fix incorrect speed value 2015-08-19 09:30:49 +12:00
Anton Tananaev c0cc6e8e55 Fix Russian translation typo 2015-08-18 22:43:27 +12:00
Anton Tananaev 1cc3a2d9d1 Do not promt password in IDE 2015-08-17 15:02:44 +12:00
Anton Tananaev 9263b4e08b Improve gradle password promt 2015-08-17 14:50:53 +12:00
Anton Tananaev 77213ecc91 Update gradle project file 2015-08-17 14:48:02 +12:00
Anton Tananaev 3214944d69 Fix wake lock release issue 2015-08-17 14:40:54 +12:00
Anton Tananaev 3e786e474d Fix null service intent issue 2015-08-17 14:35:24 +12:00
Anton Tananaev 0850ac09b0 Ensure that provider is correct 2015-08-17 14:22:13 +12:00
Anton Tananaev 50e6c00bd0 Remove unused string resources 2015-08-16 12:45:07 +12:00
Anton Tananaev 0e4918ba22 Change keystore location to relative 2015-08-16 12:37:08 +12:00
Anton Tananaev 8027c5be9f Update app version number 2015-08-16 12:33:25 +12:00
Anton Tananaev 6084bfdfbe Implement optional foreground service 2015-08-16 12:15:04 +12:00
Anton Tananaev b560577d96 Simplify position provider class 2015-08-15 21:55:53 +12:00
Anton Tananaev 92137c83bd Move wake lock to controller 2015-08-15 20:53:51 +12:00
Anton Tananaev 3617700351 Add wake lock to receiver 2015-08-14 19:49:17 +12:00
Anton Tananaev c803eb7bff Reduce default send frequency 2015-08-14 19:16:17 +12:00
Anton Tananaev 7fe765d124 Re-implement status logging 2015-08-14 18:52:28 +12:00
Anton Tananaev 3235229d1e Implement connectivity listener 2015-08-14 16:53:43 +12:00
Anton Tananaev 25e035e59d Implement buffering logic 2015-08-13 16:00:57 +12:00
Anton Tananaev b63bf4779e Implement async database calls 2015-08-13 13:29:03 +12:00
Anton Tananaev 2cf1213535 Create sync version of request 2015-08-13 11:58:59 +12:00
Anton Tananaev 03266a8c78 Implement database for buffer 2015-08-13 11:49:46 +12:00
Anton Tananaev 3782fd0003 Rename id to device id 2015-08-13 10:53:53 +12:00
Anton Tananaev fc83e7525a Start service as sticky 2015-08-12 22:30:39 +12:00
Anton Tananaev 596ede019c Use position in formatter 2015-08-12 22:14:24 +12:00
Anton Tananaev 2593ec7d2e Add port change dialog box 2015-08-12 21:53:39 +12:00
Anton Tananaev 14894c294e Change default port to 5055 2015-08-12 21:28:03 +12:00
Anton Tananaev fe9132e46a Remove old unused code 2015-08-12 20:32:42 +12:00
Anton Tananaev 26bc00f5fd Create new tracking controller 2015-08-12 20:31:09 +12:00
Anton Tananaev d5e2a3155c Refactor tracking service more 2015-08-12 20:13:04 +12:00
Anton Tananaev d49bc6ad28 Remove extended client protocol 2015-08-12 20:06:18 +12:00
Anton Tananaev c008c5f65e Refactor position provider class 2015-08-12 20:00:21 +12:00
Anton Tananaev e4f167f17b Create position model class 2015-08-12 19:52:49 +12:00
Anton Tananaev 346ad93ca0 Minor cleanup of service class 2015-08-12 19:44:04 +12:00
Anton Tananaev 3f4663c570 Remove preferences listener from service 2015-08-12 19:41:38 +12:00
Anton Tananaev 7396e9c436 Rename tracking service class 2015-08-12 19:39:10 +12:00
Anton Tananaev 59037d5fb1 Rename main activity class 2015-08-12 19:36:31 +12:00
Anton Tananaev 5591bec9e9 Minor activity class cleanup 2015-08-12 19:29:50 +12:00
Anton Tananaev e4151ac228 Disable settings when running 2015-08-12 19:28:47 +12:00
Anton Tananaev 630cf8eb86 Rename protocol formatter class 2015-08-12 19:17:18 +12:00
Anton Tananaev 222497d6ff Add new protocol formatter 2015-08-12 19:11:10 +12:00
Anton Tananaev 0f9645120b Use robolectric for unit tests 2015-08-12 16:54:47 +12:00
Anton Tananaev 9ffc0aa773 Rename main app module 2015-08-12 13:52:38 +12:00
Anton Tananaev 9d93c1d001 Update gradle wrapper props 2015-08-12 13:42:26 +12:00
Anton Tananaev ac6f648062 Create dummy request manager 2015-08-12 13:42:08 +12:00
Anton Tananaev 06c741e6b5 Add missing gradle files 2015-08-11 13:38:24 +12:00
Anton Tananaev ceaf4d526c Update gradle files 2015-08-11 13:12:48 +12:00
Anton Tananaev 6d4d0d74cd Add gradle wrapper properties 2015-08-11 13:05:55 +12:00
Anton Tananaev 0186b8fc6e Update git ignore list 2015-08-11 12:54:38 +12:00
Anton Tananaev 16c634b9f5 Cleanup project repository 2015-08-11 11:50:29 +12:00
128 изменённых файлов: 3685 добавлений и 1885 удалений
+4 -2
Просмотреть файл
@@ -1,4 +1,6 @@
.gradle .gradle
/local.properties .idea/
/.idea/workspace.xml local.properties
*.iml
build/
.DS_Store .DS_Store
Generated
-1
Просмотреть файл
@@ -1 +0,0 @@
traccar-client-android
-22
Просмотреть файл
@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
<entry name="!?*.aj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>
-3
Просмотреть файл
@@ -1,3 +0,0 @@
<component name="CopyrightManager">
<settings default="" />
</component>
-19
Просмотреть файл
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="LOCAL" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.2.1" />
<option name="gradleJvm" value="1.7" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/traccar-client" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
-22
Просмотреть файл
@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="Android API 22 Platform" project-jdk-type="Android SDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
-9
Просмотреть файл
@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/traccar-client/traccar-client.iml" filepath="$PROJECT_DIR$/traccar-client/traccar-client.iml" />
<module fileurl="file://$PROJECT_DIR$/traccar-client-android.iml" filepath="$PROJECT_DIR$/traccar-client-android.iml" />
</modules>
</component>
</project>
Generated
-6
Просмотреть файл
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
+202
Просмотреть файл
@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+5 -5
Просмотреть файл
@@ -1,15 +1,15 @@
# [Traccar Client for Android](https://www.traccar.org/client) # [Traccar Client for Android](https://www.traccar.org/client)
## Contacts [![](https://play.google.com/intl/en_us/badges/images/badge_new.png)](https://play.google.com/store/apps/details?id=org.traccar.client)
Author - Anton Tananaev ([anton.tananaev@gmail.com](mailto:anton.tananaev@gmail.com))
Website - [https://www.traccar.org/client](https://www.traccar.org/client)
## Overview ## Overview
Traccar Client is an Android GPS tracking application. It can work with Traccar open source server software. Traccar Client is an Android GPS tracking application. It can work with Traccar open source server software.
## Team
- Anton Tananaev ([anton@traccar.org](mailto:anton@traccar.org))
## License ## License
Apache License, Version 2.0 Apache License, Version 2.0
+40
Просмотреть файл
@@ -0,0 +1,40 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
minSdkVersion 3
targetSdkVersion 25
versionCode 33
versionName '4.0'
}
lintOptions {
checkReleaseBuilds false
}
productFlavors {
regular {
applicationId "org.traccar.client"
buildConfigField "boolean", "HIDDEN_APP", "false"
}
hidden {
applicationId "org.traccar.client.hidden"
buildConfigField "boolean", "HIDDEN_APP", "true"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
}
dependencies {
testCompile 'junit:junit:4.12'
testCompile 'org.robolectric:robolectric:3.0'
}
+19
Просмотреть файл
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<application
android:label="@string/hidden_app_name"
tools:replace="label">
<receiver android:name="org.traccar.client.DialLaunchReceiver" >
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
</application>
</manifest>
Двоичные данные
Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.5 KiB

Двоичные данные
Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.3 KiB

Двоичные данные
Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 8.0 KiB

Двоичные данные
Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 14 KiB

Двоичные данные
Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 20 KiB

+54
Просмотреть файл
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.traccar.client">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/TraccarTheme"
android:name=".MainApplication">
<activity android:name=".MainActivity" android:launchMode="singleTask" />
<activity-alias
android:name=".Launcher"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity android:name=".StatusActivity"/>
<activity android:name=".AboutActivity"/>
<activity
android:name=".ShortcutActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<service android:name=".TrackingService" />
<service android:name=".TrackingService$HideNotificationService" />
<receiver android:name=".AutostartReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
+134
Просмотреть файл
@@ -0,0 +1,134 @@
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.support.v4.content;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.util.Log;
import android.util.SparseArray;
/**
* Helper for the common pattern of implementing a {@link BroadcastReceiver}
* that receives a device wakeup event and then passes the work off
* to a {@link android.app.Service}, while ensuring that the
* device does not go back to sleep during the transition.
*
* <p>This class takes care of creating and managing a partial wake lock
* for you; you must request the {@link android.Manifest.permission#WAKE_LOCK}
* permission to use it.</p>
*
* <h3>Example</h3>
*
* <p>A {@link WakefulBroadcastReceiver} uses the method
* {@link WakefulBroadcastReceiver#startWakefulService startWakefulService()}
* to start the service that does the work. This method is comparable to
* {@link android.content.Context#startService startService()}, except that
* the {@link WakefulBroadcastReceiver} is holding a wake lock when the service
* starts. The intent that is passed with
* {@link WakefulBroadcastReceiver#startWakefulService startWakefulService()}
* holds an extra identifying the wake lock.</p>
*
* {@sample development/samples/Support4Demos/src/com/example/android/supportv4/content/SimpleWakefulReceiver.java complete}
*
* <p>The service (in this example, an {@link android.app.IntentService}) does
* some work. When it is finished, it releases the wake lock by calling
* {@link WakefulBroadcastReceiver#completeWakefulIntent
* completeWakefulIntent(intent)}. The intent it passes as a parameter
* is the same intent that the {@link WakefulBroadcastReceiver} originally
* passed in.</p>
*
* {@sample development/samples/Support4Demos/src/com/example/android/supportv4/content/SimpleWakefulService.java complete}
*/
public abstract class WakefulBroadcastReceiver extends BroadcastReceiver {
private static final String EXTRA_WAKE_LOCK_ID = "android.support.content.wakelockid";
private static final SparseArray<PowerManager.WakeLock> mActiveWakeLocks
= new SparseArray<PowerManager.WakeLock>();
private static int mNextId = 1;
/**
* Do a {@link android.content.Context#startService(android.content.Intent)
* Context.startService}, but holding a wake lock while the service starts.
* This will modify the Intent to hold an extra identifying the wake lock;
* when the service receives it in {@link android.app.Service#onStartCommand
* Service.onStartCommand}, it should pass back the Intent it receives there to
* {@link #completeWakefulIntent(android.content.Intent)} in order to release
* the wake lock.
*
* @param context The Context in which it operate.
* @param intent The Intent with which to start the service, as per
* {@link android.content.Context#startService(android.content.Intent)
* Context.startService}.
*/
public static ComponentName startWakefulService(Context context, Intent intent) {
synchronized (mActiveWakeLocks) {
int id = mNextId;
mNextId++;
if (mNextId <= 0) {
mNextId = 1;
}
intent.putExtra(EXTRA_WAKE_LOCK_ID, id);
ComponentName comp = context.startService(intent);
if (comp == null) {
return null;
}
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"wake:" + comp.flattenToShortString());
wl.setReferenceCounted(false);
wl.acquire(60*1000);
mActiveWakeLocks.put(id, wl);
return comp;
}
}
/**
* Finish the execution from a previous {@link #startWakefulService}. Any wake lock
* that was being held will now be released.
*
* @param intent The Intent as originally generated by {@link #startWakefulService}.
* @return Returns true if the intent is associated with a wake lock that is
* now released; returns false if there was no wake lock specified for it.
*/
public static boolean completeWakefulIntent(Intent intent) {
final int id = intent.getIntExtra(EXTRA_WAKE_LOCK_ID, 0);
if (id == 0) {
return false;
}
synchronized (mActiveWakeLocks) {
PowerManager.WakeLock wl = mActiveWakeLocks.get(id);
if (wl != null) {
wl.release();
mActiveWakeLocks.remove(id);
return true;
}
// We return true whether or not we actually found the wake lock
// the return code is defined to indicate whether the Intent contained
// an identifier for a wake lock that it was supposed to match.
// We just log a warning here if there is no wake lock found, which could
// happen for example if this function is called twice on the same
// intent or the process is killed and restarted before processing the intent.
Log.w("WakefulBroadcastReceive", "No active wake lock id #" + id);
return true;
}
}
}
@@ -15,21 +15,19 @@
*/ */
package org.traccar.client; package org.traccar.client;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.v4.content.WakefulBroadcastReceiver;
public class AutostartReceiver extends BroadcastReceiver { public class AutostartReceiver extends WakefulBroadcastReceiver {
public static final String LOG_TAG = "Traccar.AutostartReceiver";
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
if (sharedPreferences.getBoolean(TraccarActivity.KEY_STATUS, false)) { if (sharedPreferences.getBoolean(MainActivity.KEY_STATUS, false)) {
context.startService(new Intent(context, TraccarService.class)); startWakefulService(context, new Intent(context, TrackingService.class));
} }
} }
+169
Просмотреть файл
@@ -0,0 +1,169 @@
/*
* Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.AsyncTask;
import java.util.Date;
public class DatabaseHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "traccar.db";
public interface DatabaseHandler<T> {
void onComplete(boolean success, T result);
}
private static abstract class DatabaseAsyncTask<T> extends AsyncTask<Void, Void, T> {
private DatabaseHandler<T> handler;
private RuntimeException error;
public DatabaseAsyncTask(DatabaseHandler<T> handler) {
this.handler = handler;
}
@Override
protected T doInBackground(Void... params) {
try {
return executeMethod();
} catch (RuntimeException error) {
this.error = error;
return null;
}
}
protected abstract T executeMethod();
@Override
protected void onPostExecute(T result) {
handler.onComplete(error == null, result);
}
}
private SQLiteDatabase db;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
db = getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE position (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT," +
"deviceId TEXT," +
"time INTEGER," +
"latitude REAL," +
"longitude REAL," +
"altitude REAL," +
"speed REAL," +
"course REAL," +
"battery REAL)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS position;");
onCreate(db);
}
public void insertPosition(Position position) {
ContentValues values = new ContentValues();
values.put("deviceId", position.getDeviceId());
values.put("time", position.getTime().getTime());
values.put("latitude", position.getLatitude());
values.put("longitude", position.getLongitude());
values.put("altitude", position.getAltitude());
values.put("speed", position.getSpeed());
values.put("course", position.getCourse());
values.put("battery", position.getBattery());
db.insertOrThrow("position", null, values);
}
public void insertPositionAsync(final Position position, DatabaseHandler<Void> handler) {
new DatabaseAsyncTask<Void>(handler) {
@Override
protected Void executeMethod() {
insertPosition(position);
return null;
}
}.execute();
}
public Position selectPosition() {
Position position = new Position();
Cursor cursor = db.rawQuery("SELECT * FROM position ORDER BY id LIMIT 1", null);
try {
if (cursor.getCount() > 0) {
cursor.moveToFirst();
position.setId(cursor.getLong(cursor.getColumnIndex("id")));
position.setDeviceId(cursor.getString(cursor.getColumnIndex("deviceId")));
position.setTime(new Date(cursor.getLong(cursor.getColumnIndex("time"))));
position.setLatitude(cursor.getDouble(cursor.getColumnIndex("latitude")));
position.setLongitude(cursor.getDouble(cursor.getColumnIndex("longitude")));
position.setAltitude(cursor.getDouble(cursor.getColumnIndex("altitude")));
position.setSpeed(cursor.getDouble(cursor.getColumnIndex("speed")));
position.setCourse(cursor.getDouble(cursor.getColumnIndex("course")));
position.setBattery(cursor.getDouble(cursor.getColumnIndex("battery")));
} else {
return null;
}
} finally {
cursor.close();
}
return position;
}
public void selectPositionAsync(DatabaseHandler<Position> handler) {
new DatabaseAsyncTask<Position>(handler) {
@Override
protected Position executeMethod() {
return selectPosition();
}
}.execute();
}
public void deletePosition(long id) {
if (db.delete("position", "id = ?", new String[] { String.valueOf(id) }) != 1) {
throw new SQLException();
}
}
public void deletePositionAsync(final long id, DatabaseHandler<Void> handler) {
new DatabaseAsyncTask<Void>(handler) {
@Override
protected Void executeMethod() {
deletePosition(id);
return null;
}
}.execute();
}
}
+37
Просмотреть файл
@@ -0,0 +1,37 @@
/*
* Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class DialLaunchReceiver extends BroadcastReceiver {
private static final String LAUNCHER_NUMBER = "8722227"; // TRACCAR
@Override
public void onReceive(Context context, Intent intent) {
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
if (phoneNumber.equals(LAUNCHER_NUMBER)) {
setResultData(null);
Intent appIntent = new Intent(context, MainActivity.class);
appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(appIntent);
}
}
}
+290
Просмотреть файл
@@ -0,0 +1,290 @@
/*
* Copyright 2012 - 2017 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.Manifest;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.TwoStatePreference;
import android.util.Log;
import android.util.Patterns;
import android.view.Menu;
import android.view.MenuItem;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
@SuppressWarnings("deprecation")
public class MainActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
private static final String TAG = MainActivity.class.getSimpleName();
public static final String KEY_DEVICE = "id";
public static final String KEY_ADDRESS = "address";
public static final String KEY_PORT = "port";
public static final String KEY_SECURE = "secure";
public static final String KEY_INTERVAL = "interval";
public static final String KEY_PROVIDER = "provider";
public static final String KEY_STATUS = "status";
private static final int PERMISSIONS_REQUEST_LOCATION = 2;
private SharedPreferences sharedPreferences;
private AlarmManager alarmManager;
private PendingIntent alarmIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (BuildConfig.HIDDEN_APP) {
removeLauncherIcon();
}
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
addPreferencesFromResource(R.xml.preferences);
initPreferences();
findPreference(KEY_DEVICE).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return newValue != null && !newValue.equals("");
}
});
findPreference(KEY_ADDRESS).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
return newValue != null && Patterns.DOMAIN_NAME.matcher((String) newValue).matches();
} else {
return newValue != null && !((String) newValue).isEmpty();
}
}
});
findPreference(KEY_PORT).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null) {
try {
int value = Integer.parseInt((String) newValue);
return value > 0 && value <= 65536;
} catch (NumberFormatException e) {
Log.w(TAG, e);
}
}
return false;
}
});
findPreference(KEY_INTERVAL).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null) {
try {
int value = Integer.parseInt((String) newValue);
return value > 0;
} catch (NumberFormatException e) {
Log.w(TAG, e);
}
}
return false;
}
});
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, AutostartReceiver.class), 0);
if (sharedPreferences.getBoolean(KEY_STATUS, false)) {
startTrackingService(true, false);
}
}
private void removeLauncherIcon() {
String className = MainActivity.class.getCanonicalName().replace(".MainActivity", ".Launcher");
ComponentName componentName = new ComponentName(getPackageName(), className);
PackageManager packageManager = getPackageManager();
if (packageManager.getComponentEnabledSetting(componentName) != PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
packageManager.setComponentEnabledSetting(
componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setMessage(getString(R.string.hidden_alert));
builder.setPositiveButton(android.R.string.ok, null);
builder.show();
}
}
private void addShortcuts(String action, int name) {
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.setComponent(new ComponentName(getPackageName(), ShortcutActivity.class.getCanonicalName()));
shortcutIntent.putExtra(ShortcutActivity.EXTRA_ACTION, action);
Intent installShortCutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
installShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
installShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(name));
installShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher));
sendBroadcast(installShortCutIntent);
}
private boolean hasPermission(String permission) {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
return true;
}
return checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED;
}
@Override
protected void onResume() {
super.onResume();
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
private void setPreferencesEnabled(boolean enabled) {
findPreference(KEY_DEVICE).setEnabled(enabled);
findPreference(KEY_ADDRESS).setEnabled(enabled);
findPreference(KEY_PORT).setEnabled(enabled);
findPreference(KEY_SECURE).setEnabled(enabled);
findPreference(KEY_INTERVAL).setEnabled(enabled);
findPreference(KEY_PROVIDER).setEnabled(enabled);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals(KEY_STATUS)) {
if (sharedPreferences.getBoolean(KEY_STATUS, false)) {
startTrackingService(true, false);
} else {
stopTrackingService();
}
} else if (key.equals(KEY_DEVICE)) {
findPreference(KEY_DEVICE).setSummary(sharedPreferences.getString(KEY_DEVICE, null));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.status) {
startActivity(new Intent(this, StatusActivity.class));
return true;
} else if (item.getItemId() == R.id.shortcuts) {
addShortcuts(ShortcutActivity.EXTRA_ACTION_START, R.string.shortcut_start);
addShortcuts(ShortcutActivity.EXTRA_ACTION_STOP, R.string.shortcut_stop);
addShortcuts(ShortcutActivity.EXTRA_ACTION_SOS, R.string.shortcut_sos);
return true;
} else if (item.getItemId() == R.id.about) {
startActivity(new Intent(this, AboutActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
private void initPreferences() {
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
if (!sharedPreferences.contains(KEY_DEVICE)) {
String id = String.valueOf(new Random().nextInt(900000) + 100000);
sharedPreferences.edit().putString(KEY_DEVICE, id).commit();
((EditTextPreference) findPreference(KEY_DEVICE)).setText(id);
}
findPreference(KEY_DEVICE).setSummary(sharedPreferences.getString(KEY_DEVICE, null));
}
private void startTrackingService(boolean checkPermission, boolean permission) {
if (checkPermission) {
Set<String> missingPermissions = new HashSet<>();
if (!hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)) {
missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (!hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION)) {
missingPermissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
if (missingPermissions.isEmpty()) {
permission = true;
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(missingPermissions.toArray(new String[missingPermissions.size()]),
PERMISSIONS_REQUEST_LOCATION);
}
return;
}
}
if (permission) {
setPreferencesEnabled(false);
startService(new Intent(this, TrackingService.class));
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
15000, 15000, alarmIntent);
} else {
sharedPreferences.edit().putBoolean(KEY_STATUS, false).commit();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
TwoStatePreference preference = (TwoStatePreference) findPreference(KEY_STATUS);
preference.setChecked(false);
} else {
CheckBoxPreference preference = (CheckBoxPreference) findPreference(KEY_STATUS);
preference.setChecked(false);
}
}
}
private void stopTrackingService() {
alarmManager.cancel(alarmIntent);
stopService(new Intent(this, TrackingService.class));
setPreferencesEnabled(true);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_LOCATION) {
boolean granted = true;
for (int result : grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
granted = false;
break;
}
}
startTrackingService(false, granted);
}
}
}
+28
Просмотреть файл
@@ -0,0 +1,28 @@
/*
* Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.app.Application;
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
System.setProperty("http.keepAliveDuration", String.valueOf(30 * 60 * 1000));
}
}
+122
Просмотреть файл
@@ -0,0 +1,122 @@
/*
* Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.content.Context;
import android.location.GpsStatus;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
@SuppressWarnings("MissingPermission")
public class MixedPositionProvider extends PositionProvider implements LocationListener, GpsStatus.Listener {
private static int FIX_TIMEOUT = 30 * 1000;
private LocationListener backupListener;
private long lastFixTime;
public MixedPositionProvider(Context context, PositionListener listener) {
super(context, listener);
}
public void startUpdates() {
lastFixTime = System.currentTimeMillis();
locationManager.addGpsStatusListener(this);
try {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, period, 0, this);
} catch (IllegalArgumentException e) {
Log.w(TAG, e);
}
}
public void stopUpdates() {
locationManager.removeUpdates(this);
locationManager.removeGpsStatusListener(this);
stopBackupProvider();
}
private void startBackupProvider() {
Log.i(TAG, "backup provider start");
if (backupListener == null) {
backupListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.i(TAG, "backup provider location");
updateLocation(location);
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, period, 0, backupListener);
}
}
private void stopBackupProvider() {
Log.i(TAG, "backup provider stop");
if (backupListener != null) {
locationManager.removeUpdates(backupListener);
backupListener = null;
}
}
@Override
public void onLocationChanged(Location location) {
Log.i(TAG, "provider location");
stopBackupProvider();
lastFixTime = System.currentTimeMillis();
updateLocation(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
Log.i(TAG, "provider enabled");
stopBackupProvider();
}
@Override
public void onProviderDisabled(String provider) {
Log.i(TAG, "provider disabled");
startBackupProvider();
}
@Override
public void onGpsStatusChanged(int event) {
if (backupListener == null && System.currentTimeMillis() - (lastFixTime + period) > FIX_TIMEOUT) {
startBackupProvider();
}
}
}
+68
Просмотреть файл
@@ -0,0 +1,68 @@
/*
* Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
public class NetworkManager extends BroadcastReceiver {
private static final String TAG = NetworkManager.class.getSimpleName();
private Context context;
private NetworkHandler handler;
private ConnectivityManager connectivityManager;
public NetworkManager(Context context, NetworkHandler handler) {
this.context = context;
this.handler = handler;
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
public interface NetworkHandler {
void onNetworkUpdate(boolean isOnline);
}
public boolean isOnline() {
NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}
public void start() {
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(this, filter);
}
public void stop() {
context.unregisterReceiver(this);
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION) && handler != null) {
boolean isOnline = isOnline();
Log.i(TAG, "network " + (isOnline ? "on" : "off"));
handler.onNetworkUpdate(isOnline);
}
}
}
+74
Просмотреть файл
@@ -0,0 +1,74 @@
/*
* Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.location.Location;
import java.util.Date;
public class Position {
public Position() {
}
public Position(String deviceId, Location location, double battery) {
this.deviceId = deviceId;
time = new Date(location.getTime());
latitude = location.getLatitude();
longitude = location.getLongitude();
altitude = location.getAltitude();
speed = location.getSpeed() * 1.943844; // speed in knots
course = location.getBearing();
this.battery = battery;
}
private long id;
public long getId() { return id; }
public void setId(long id) { this.id = id; }
private String deviceId;
public String getDeviceId() { return deviceId; }
public void setDeviceId(String deviceId) { this.deviceId = deviceId; }
private Date time;
public Date getTime() { return time; }
public void setTime(Date time) { this.time = time; }
private double latitude;
public double getLatitude() { return latitude; }
public void setLatitude(double latitude) { this.latitude = latitude; }
private double longitude;
public double getLongitude() { return longitude; }
public void setLongitude(double longitude) { this.longitude = longitude; }
private double altitude;
public double getAltitude() { return altitude; }
public void setAltitude(double altitude) { this.altitude = altitude; }
private double speed;
public double getSpeed() { return speed; }
public void setSpeed(double speed) { this.speed = speed; }
private double course;
public double getCourse() { return course; }
public void setCourse(double course) { this.course = course; }
private double battery;
public double getBattery() { return battery; }
public void setBattery(double battery) { this.battery = battery; }
}
+89
Просмотреть файл
@@ -0,0 +1,89 @@
/*
* Copyright 2013 - 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.location.Location;
import android.location.LocationManager;
import android.os.BatteryManager;
import android.os.Build;
import android.preference.PreferenceManager;
import android.util.Log;
public abstract class PositionProvider {
protected static final String TAG = PositionProvider.class.getSimpleName();
public interface PositionListener {
void onPositionUpdate(Position position);
}
private final PositionListener listener;
private final Context context;
private final SharedPreferences preferences;
protected final LocationManager locationManager;
private String deviceId;
protected String type;
protected final long period;
private long lastUpdateTime;
public PositionProvider(Context context, PositionListener listener) {
this.context = context;
this.listener = listener;
preferences = PreferenceManager.getDefaultSharedPreferences(context);
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
deviceId = preferences.getString(MainActivity.KEY_DEVICE, null);
period = Long.parseLong(preferences.getString(MainActivity.KEY_INTERVAL, null)) * 1000;
type = preferences.getString(MainActivity.KEY_PROVIDER, "gps");
}
public abstract void startUpdates();
public abstract void stopUpdates();
protected void updateLocation(Location location) {
if (location != null && location.getTime() - lastUpdateTime >= period) {
Log.i(TAG, "location new");
lastUpdateTime = location.getTime();
listener.onPositionUpdate(new Position(deviceId, location, getBatteryLevel(context)));
} else {
Log.i(TAG, location != null ? "location old" : "location nil");
}
}
@TargetApi(Build.VERSION_CODES.ECLAIR)
public static double getBatteryLevel(Context context) {
if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.ECLAIR) {
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 1);
return (level * 100.0) / scale;
} else {
return 0;
}
}
}
+46
Просмотреть файл
@@ -0,0 +1,46 @@
/*
* Copyright 2012 - 2016 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.net.Uri;
public class ProtocolFormatter {
public static String formatRequest(String address, int port, boolean secure, Position position) {
return formatRequest(address, port, secure, position, null);
}
public static String formatRequest(String address, int port, boolean secure, Position position, String alarm) {
Uri.Builder builder = new Uri.Builder();
builder.scheme(secure ? "https" : "http").encodedAuthority(address + ':' + port)
.appendQueryParameter("id", position.getDeviceId())
.appendQueryParameter("timestamp", String.valueOf(position.getTime().getTime() / 1000))
.appendQueryParameter("lat", String.valueOf(position.getLatitude()))
.appendQueryParameter("lon", String.valueOf(position.getLongitude()))
.appendQueryParameter("speed", String.valueOf(position.getSpeed()))
.appendQueryParameter("bearing", String.valueOf(position.getCourse()))
.appendQueryParameter("altitude", String.valueOf(position.getAltitude()))
.appendQueryParameter("batt", String.valueOf(position.getBattery()));
if (alarm != null) {
builder.appendQueryParameter("alarm", alarm);
}
return builder.build().toString();
}
}
+81
Просмотреть файл
@@ -0,0 +1,81 @@
/*
* Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.os.AsyncTask;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class RequestManager {
private static final int TIMEOUT = 15 * 1000;
public interface RequestHandler {
void onComplete(boolean success);
}
private static class RequestAsyncTask extends AsyncTask<String, Void, Boolean> {
private RequestHandler handler;
public RequestAsyncTask(RequestHandler handler) {
this.handler = handler;
}
@Override
protected Boolean doInBackground(String... request) {
return sendRequest(request[0]);
}
@Override
protected void onPostExecute(Boolean result) {
handler.onComplete(result);
}
}
public static boolean sendRequest(String request) {
InputStream inputStream = null;
try {
URL url = new URL(request);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(TIMEOUT);
connection.setConnectTimeout(TIMEOUT);
connection.connect();
inputStream = connection.getInputStream();
while (inputStream.read() != -1);
return true;
} catch (IOException error) {
return false;
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (IOException secondError) {
return false;
}
}
}
public static void sendRequestAsync(String request, RequestHandler handler) {
RequestAsyncTask task = new RequestAsyncTask(handler);
task.execute(request);
}
}
+116
Просмотреть файл
@@ -0,0 +1,116 @@
/*
* Copyright 2016 - 2017 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.Toast;
public class ShortcutActivity extends Activity {
public static final String EXTRA_ACTION = "action";
public static final String EXTRA_ACTION_START = "start";
public static final String EXTRA_ACTION_STOP = "stop";
public static final String EXTRA_ACTION_SOS = "sos";
private static final String ALARM_SOS = "sos";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkShortcutAction(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
checkShortcutAction(intent);
}
@SuppressWarnings("MissingPermission")
private void sendAlarm() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location == null) {
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
if (location != null) {
Position position = new Position(
preferences.getString(MainActivity.KEY_DEVICE, null),
location, PositionProvider.getBatteryLevel(this));
String request = ProtocolFormatter.formatRequest(
preferences.getString(MainActivity.KEY_ADDRESS, null),
Integer.parseInt(preferences.getString(MainActivity.KEY_PORT, null)),
preferences.getBoolean(MainActivity.KEY_SECURE, false),
position, ALARM_SOS);
RequestManager.sendRequestAsync(request, new RequestManager.RequestHandler() {
@Override
public void onComplete(boolean success) {
if (success) {
Toast.makeText(ShortcutActivity.this, R.string.status_send_success, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ShortcutActivity.this, R.string.status_send_fail, Toast.LENGTH_SHORT).show();
}
}
});
} else {
Toast.makeText(this, R.string.status_send_fail, Toast.LENGTH_SHORT).show();
}
}
private void checkShortcutAction(Intent intent) {
String action;
if (intent.hasExtra("shortcutAction")) {
action = intent.getBooleanExtra("shortcutAction", false)
? EXTRA_ACTION_START : EXTRA_ACTION_STOP;
} else {
action = intent.getStringExtra(EXTRA_ACTION);
}
switch (action) {
case EXTRA_ACTION_START:
PreferenceManager.getDefaultSharedPreferences(this)
.edit().putBoolean(MainActivity.KEY_STATUS, true).commit();
startService(new Intent(this, TrackingService.class));
Toast.makeText(this, R.string.status_service_create, Toast.LENGTH_SHORT).show();
break;
case EXTRA_ACTION_STOP:
PreferenceManager.getDefaultSharedPreferences(this)
.edit().putBoolean(MainActivity.KEY_STATUS, false).commit();
stopService(new Intent(this, TrackingService.class));
Toast.makeText(this, R.string.status_service_destroy, Toast.LENGTH_SHORT).show();
break;
case EXTRA_ACTION_SOS:
sendAlarm();
break;
}
finish();
}
}
+64
Просмотреть файл
@@ -0,0 +1,64 @@
/*
* Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
@SuppressWarnings("MissingPermission")
public class SimplePositionProvider extends PositionProvider implements LocationListener {
public SimplePositionProvider(Context context, PositionListener listener) {
super(context, listener);
if (!type.equals(LocationManager.NETWORK_PROVIDER)) {
type = LocationManager.GPS_PROVIDER;
}
}
public void startUpdates() {
try {
locationManager.requestLocationUpdates(type, period, 0, this);
} catch (IllegalArgumentException e) {
Log.w(TAG, e);
}
}
public void stopUpdates() {
locationManager.removeUpdates(this);
}
@Override
public void onLocationChanged(Location location) {
updateLocation(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
@@ -23,7 +23,6 @@ import java.util.Set;
import android.app.ListActivity; import android.app.ListActivity;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
@@ -43,7 +42,6 @@ public class StatusActivity extends ListActivity {
} }
public static void addMessage(String message) { public static void addMessage(String message) {
Log.i(TraccarActivity.LOG_TAG, message);
DateFormat format = DateFormat.getTimeInstance(DateFormat.SHORT); DateFormat format = DateFormat.getTimeInstance(DateFormat.SHORT);
message = format.format(new Date()) + " - " + message; message = format.format(new Date()) + " - " + message;
messages.add(message); messages.add(message);
+229
Просмотреть файл
@@ -0,0 +1,229 @@
/*
* Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Handler;
import android.os.PowerManager;
import android.preference.PreferenceManager;
import android.util.Log;
public class TrackingController implements PositionProvider.PositionListener, NetworkManager.NetworkHandler {
private static final String TAG = TrackingController.class.getSimpleName();
private static final int RETRY_DELAY = 30 * 1000;
private static final int WAKE_LOCK_TIMEOUT = 120 * 1000;
private boolean isOnline;
private boolean isWaiting;
private Context context;
private Handler handler;
private SharedPreferences preferences;
private String address;
private int port;
private boolean secure;
private PositionProvider positionProvider;
private DatabaseHelper databaseHelper;
private NetworkManager networkManager;
private PowerManager.WakeLock wakeLock;
private void lock() {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) {
wakeLock.acquire();
} else {
wakeLock.acquire(WAKE_LOCK_TIMEOUT);
}
}
private void unlock() {
if (wakeLock.isHeld()) {
wakeLock.release();
}
}
public TrackingController(Context context) {
this.context = context;
handler = new Handler();
preferences = PreferenceManager.getDefaultSharedPreferences(context);
if (preferences.getString(MainActivity.KEY_PROVIDER, "gps").equals("mixed")) {
positionProvider = new MixedPositionProvider(context, this);
} else {
positionProvider = new SimplePositionProvider(context, this);
}
databaseHelper = new DatabaseHelper(context);
networkManager = new NetworkManager(context, this);
isOnline = networkManager.isOnline();
address = preferences.getString(MainActivity.KEY_ADDRESS, null);
port = Integer.parseInt(preferences.getString(MainActivity.KEY_PORT, null));
secure = preferences.getBoolean(MainActivity.KEY_SECURE, false);
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName());
}
public void start() {
if (isOnline) {
read();
}
try {
positionProvider.startUpdates();
} catch (SecurityException e) {
Log.w(TAG, e);
}
networkManager.start();
}
public void stop() {
networkManager.stop();
try {
positionProvider.stopUpdates();
} catch (SecurityException e) {
Log.w(TAG, e);
}
handler.removeCallbacksAndMessages(null);
}
@Override
public void onPositionUpdate(Position position) {
StatusActivity.addMessage(context.getString(R.string.status_location_update));
if (position != null) {
write(position);
}
}
@Override
public void onNetworkUpdate(boolean isOnline) {
StatusActivity.addMessage(context.getString(R.string.status_connectivity_change));
if (!this.isOnline && isOnline) {
read();
}
this.isOnline = isOnline;
}
//
// State transition examples:
//
// write -> read -> send -> delete -> read
//
// read -> send -> retry -> read -> send
//
private void log(String action, Position position) {
if (position != null) {
action += " (" +
"id:" + position.getId() +
" time:" + position.getTime().getTime() / 1000 +
" lat:" + position.getLatitude() +
" lon:" + position.getLongitude() + ")";
}
Log.d(TAG, action);
}
private void write(Position position) {
log("write", position);
lock();
databaseHelper.insertPositionAsync(position, new DatabaseHelper.DatabaseHandler<Void>() {
@Override
public void onComplete(boolean success, Void result) {
if (success) {
if (isOnline && isWaiting) {
read();
isWaiting = false;
}
}
unlock();
}
});
}
private void read() {
log("read", null);
lock();
databaseHelper.selectPositionAsync(new DatabaseHelper.DatabaseHandler<Position>() {
@Override
public void onComplete(boolean success, Position result) {
if (success) {
if (result != null) {
if (result.getDeviceId().equals(preferences.getString(MainActivity.KEY_DEVICE, null))) {
send(result);
} else {
delete(result);
}
} else {
isWaiting = true;
}
} else {
retry();
}
unlock();
}
});
}
private void delete(Position position) {
log("delete", position);
lock();
databaseHelper.deletePositionAsync(position.getId(), new DatabaseHelper.DatabaseHandler<Void>() {
@Override
public void onComplete(boolean success, Void result) {
if (success) {
read();
} else {
retry();
}
unlock();
}
});
}
private void send(final Position position) {
log("send", position);
lock();
String request = ProtocolFormatter.formatRequest(address, port, secure, position);
RequestManager.sendRequestAsync(request, new RequestManager.RequestHandler() {
@Override
public void onComplete(boolean success) {
if (success) {
delete(position);
} else {
StatusActivity.addMessage(context.getString(R.string.status_send_fail));
retry();
}
unlock();
}
});
}
private void retry() {
log("retry", null);
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (isOnline) {
read();
}
}
}, RETRY_DELAY);
}
}
+130
Просмотреть файл
@@ -0,0 +1,130 @@
/*
* Copyright 2012 - 2015 Anton Tananaev (anton.tananaev@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.traccar.client;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.IBinder;
import android.util.Log;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class TrackingService extends Service {
private static final String TAG = TrackingService.class.getSimpleName();
private static final int NOTIFICATION_ID = 1;
private TrackingController trackingController;
@SuppressWarnings("deprecation")
private static Notification createNotification(Context context) {
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
Notification notification = new Notification(android.R.drawable.stat_notify_sync_noanim, null, 0);
try {
Method method = notification.getClass().getMethod("setLatestEventInfo", Context.class, CharSequence.class, CharSequence.class, PendingIntent.class);
try {
method.invoke(notification, context, context.getString(R.string.app_name), context.getString(R.string.settings_status_on_summary), pendingIntent);
} catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
Log.w(TAG, e);
}
} catch (SecurityException | NoSuchMethodException e) {
Log.w(TAG, e);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
notification.priority = Notification.PRIORITY_MIN;
}
return notification;
}
@TargetApi(Build.VERSION_CODES.ECLAIR)
public static class HideNotificationService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
startForeground(NOTIFICATION_ID, createNotification(this));
stopForeground(true);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
stopSelfResult(startId);
return START_NOT_STICKY;
}
}
@Override
public void onCreate() {
Log.i(TAG, "service create");
StatusActivity.addMessage(getString(R.string.status_service_create));
trackingController = new TrackingController(this);
trackingController.start();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
startForeground(NOTIFICATION_ID, createNotification(this));
startService(new Intent(this, HideNotificationService.class));
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@SuppressWarnings("deprecation")
@Override
public void onStart(Intent intent, int startId) {
if (intent != null) {
AutostartReceiver.completeWakefulIntent(intent);
}
}
@TargetApi(Build.VERSION_CODES.ECLAIR)
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
onStart(intent, startId);
return START_STICKY;
}
@Override
public void onDestroy() {
Log.i(TAG, "service destroy");
StatusActivity.addMessage(getString(R.string.status_service_destroy));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
stopForeground(true);
}
if (trackingController != null) {
trackingController.stop();
}
}
}
Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.6 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.4 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.8 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 7.2 KiB

+1 -1
Просмотреть файл
@@ -13,7 +13,7 @@
android:layout_marginLeft="@dimen/about_margin" android:layout_marginLeft="@dimen/about_margin"
android:layout_marginStart="@dimen/about_margin" android:layout_marginStart="@dimen/about_margin"
android:layout_marginTop="@dimen/about_margin" android:layout_marginTop="@dimen/about_margin"
android:src="@drawable/ic_launcher" android:src="@drawable/logo"
android:contentDescription="@string/app_logo" /> android:contentDescription="@string/app_logo" />
<LinearLayout <LinearLayout
Просмотреть файл
+6 -1
Просмотреть файл
@@ -6,9 +6,14 @@
android:title="@string/menu_status" android:title="@string/menu_status"
android:showAsAction="always" /> android:showAsAction="always" />
<item
android:id="@+id/shortcuts"
android:title="@string/menu_shortcuts"
android:showAsAction="never" />
<item <item
android:id="@+id/about" android:id="@+id/about"
android:title="@string/menu_about" android:title="@string/menu_about"
android:showAsAction="ifRoom" /> android:showAsAction="never" />
</menu> </menu>
Просмотреть файл
+40
Просмотреть файл
@@ -0,0 +1,40 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">عميل Traccar</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - بدء</string>
<string name="shortcut_stop">Traccar - إيقاف</string>
<string name="settings_id_title">معرف الجهاز</string>
<string name="settings_address_title">عنوان الخادم</string>
<string name="settings_address_summary">اسم النطاق أو عنوان بروتوكول الإنترنت</string>
<string name="settings_port_title">منفذ الخادم</string>
<string name="settings_port_summary">تعقب منفذ خادم تي سي بي</string>
<string name="settings_interval_title">تردد</string>
<string name="settings_interval_summary">فترة الرسائل بالثواني</string>
<string name="settings_status_title">حالة الخدمة</string>
<string name="settings_status_off">بدء</string>
<string name="settings_status_on">إيقاف</string>
<string name="settings_status_off_summary">الخدمة توقفت</string>
<string name="settings_status_on_summary">الخدمة تعمل</string>
<string name="settings_provider_title">موفر الموقع</string>
<string name="settings_provider_summary">مصدر بيانات الموقع</string>
<string name="settings_provider_gps">موفر نظام تحديد الموقع</string>
<string name="settings_provider_network">موفر الشبكة</string>
<string name="settings_provider_mixed">موفر المختلط</string>
<string name="settings_foreground_title">الخدمة الأمامية</string>
<string name="settings_foreground_summary">زيادة أولوية الخدمة</string>
<string name="menu_status">الحالة</string>
<string name="menu_about">حول</string>
<string name="menu_shortcuts">إضافة اختصارات</string>
<string name="menu_clear">مسح</string>
<string name="about_description">محدد الموقع في الوقت الفعلي لأجهزة Android. متوافق مع خادم Traccar ونظم تعقب أخرى </string>
<string name="about_license">هذا التطبيق مجاني ومفتوح المصدر، الكود المصدري مرخص تحت رخصة Apache الإصدار 2.0 و متاح على GitHub.</string>
<string name="about_web">لمزيد من المعلومات زر \nwww.traccar.org/client</string>
<string name="status_service_create">تم إنشاء الخدمة</string>
<string name="status_service_destroy">تم تدمير الخدمة</string>
<string name="status_send_fail">فشل الإرسال</string>
<string name="status_location_update">تحديث الموقع</string>
<string name="status_connectivity_change">تغير الارتباط</string>
<string name="hidden_app_name">إعدادات الجهاز</string>
<string name="hidden_alert">تم إخفاء التطبيق. لفتحه مجددا رجاءا اتصل بـ8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Client</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar -Старт</string>
<string name="shortcut_stop">Traccar - Стоп</string>
<string name="settings_id_title">Идентификатор</string>
<string name="settings_address_title">Адрес на сървъра</string>
<string name="settings_address_summary">Име на домейн или IP адрес</string>
<string name="settings_port_title">Порт на сървъра</string>
<string name="settings_port_summary">Tracking server TCP port</string>
<string name="settings_interval_title">Честота</string>
<string name="settings_interval_summary">Интервал на координатите в сек.</string>
<string name="settings_status_title">Състояние на услугата</string>
<string name="settings_status_off">Старт</string>
<string name="settings_status_on">Стоп</string>
<string name="settings_status_off_summary">Услугата е спряна</string>
<string name="settings_status_on_summary">Услугата работи</string>
<string name="settings_secure_title">Шифроване</string>
<string name="settings_secure_off">Активиране</string>
<string name="settings_secure_on">Деактивиране</string>
<string name="settings_secure_off_summary">Шифроване изкл.</string>
<string name="settings_secure_on_summary">Шифроване вкл.</string>
<string name="settings_provider_title">Доставчик на местоположение</string>
<string name="settings_provider_summary">Източник на данни за местоположението</string>
<string name="settings_provider_gps">GPS</string>
<string name="settings_provider_network">Мрежи</string>
<string name="settings_provider_mixed">Смесен Доставчик</string>
<string name="settings_foreground_title">Foreground service</string>
<string name="settings_foreground_summary">Увеличаване на приоритета на услугата</string>
<string name="menu_status">Състояние</string>
<string name="menu_about">About</string>
<string name="menu_shortcuts">Добави пряк път</string>
<string name="menu_clear">Изтрий</string>
<string name="about_description">Real time GPS tracker for Android devices. Compatible with Traccar Server and other tracking systems.</string>
<string name="about_license">This application is free and open source, source code is licensed under Apache License Version 2.0 and available on GitHub.</string>
<string name="about_web">For more information visit\nwww.traccar.org/client</string>
<string name="status_service_create">Услугата е създадена</string>
<string name="status_service_destroy">Услугата е премахната</string>
<string name="status_send_fail">Грешка в изпращането</string>
<string name="status_location_update">Местоположението е обновено</string>
<string name="status_connectivity_change">Промяна в свързването</string>
<string name="hidden_app_name">Настройки</string>
<string name="hidden_alert">The app has been hidden. To open it again please dial 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar klient</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Spustit</string>
<string name="shortcut_stop">Traccar - Zastavit</string>
<string name="settings_id_title">Identifikátor zařízení</string>
<string name="settings_address_title">Adresa serveru</string>
<string name="settings_address_summary">Doménové jméno nebo IP adresa</string>
<string name="settings_port_title">Port</string>
<string name="settings_port_summary">TCP port sledovacího serveru</string>
<string name="settings_interval_title">Frekvence</string>
<string name="settings_interval_summary">Interval zpráv v sekundách</string>
<string name="settings_status_title">Stav služby</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Zastaveno</string>
<string name="settings_status_on_summary">Spuštěno</string>
<string name="settings_secure_title">Šifrování</string>
<string name="settings_secure_off">Povolit</string>
<string name="settings_secure_on">Zakázat</string>
<string name="settings_secure_off_summary">Šifrování zakázáno</string>
<string name="settings_secure_on_summary">Šifrování povoleno</string>
<string name="settings_provider_title">Poskytovatel zaměření</string>
<string name="settings_provider_summary">Zdroj zaměřovacích dat</string>
<string name="settings_provider_gps">GPS</string>
<string name="settings_provider_network">Mobilní síť</string>
<string name="settings_provider_mixed">Obojí</string>
<string name="settings_foreground_title">Popředí služba</string>
<string name="settings_foreground_summary">Zvýšit prioritu služba</string>
<string name="menu_status">Stav</string>
<string name="menu_about">O aplikaci</string>
<string name="menu_shortcuts">Přidat zástupce</string>
<string name="menu_clear">Vyčistit</string>
<string name="about_description">GPS sledovací aplikace pracující v reálném čase pro zařízení s operačním systémem Android. Kompatibilní s Traccar serverem a dalšími sledovacími systémy.</string>
<string name="about_license">Tato aplikace je zdarma a open source, zdrojový kód je licencován pod Apache License Version 2.0 a je přístupný na GitHub.</string>
<string name="about_web">Pro více informací navštivte\nwww.traccar.org/client</string>
<string name="status_service_create">Služba vytvořena</string>
<string name="status_service_destroy">Služba zastavena</string>
<string name="status_send_fail">Odesílání selhalo</string>
<string name="status_location_update">Aktualizace pozice</string>
<string name="status_connectivity_change">Změna připojení</string>
<string name="hidden_app_name">Nastavení zařízení</string>
<string name="hidden_alert">Aplikace byla skryta. Pro znovuotevření vytočte 8722227 (TRACCAR)</string>
</resources>
+40
Просмотреть файл
@@ -0,0 +1,40 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar klient</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stop</string>
<string name="settings_id_title">Indentificere Enhed</string>
<string name="settings_address_title">Server adresse</string>
<string name="settings_address_summary">Domænenavn eller IP adresse</string>
<string name="settings_port_title">Server port</string>
<string name="settings_port_summary">Tracking server TCP port</string>
<string name="settings_interval_title">Tracking interval</string>
<string name="settings_interval_summary">Besked interval i sekunder</string>
<string name="settings_status_title">Service status</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Service stoppet</string>
<string name="settings_status_on_summary">Service er aktiv</string>
<string name="settings_provider_title">Udbyder</string>
<string name="settings_provider_summary">Udbyder lokaliseringsdata</string>
<string name="settings_provider_gps">GPS udbyder</string>
<string name="settings_provider_network">Netværks udbyder</string>
<string name="settings_provider_mixed">Mixet udbyder</string>
<string name="settings_foreground_title">Forgrunden tjeneste</string>
<string name="settings_foreground_summary">Øg tjeneste prioritet</string>
<string name="menu_status">Status</string>
<string name="menu_about">Om</string>
<string name="menu_shortcuts">Tilføj genveje</string>
<string name="menu_clear">Tilbage</string>
<string name="about_description">Real tid`s GPS tracker for Android enheder. Kompatibel med Traccar Server og andre tracking systemer.</string>
<string name="about_license">Denne application er en fri og open source, source koden er licenseret under Apache License Version 2.0 og tilgængelig på GitHub.</string>
<string name="about_web">For mere information besøg\nwww.traccar.org/client</string>
<string name="status_service_create">Service oprettet</string>
<string name="status_service_destroy">Service ødelagt</string>
<string name="status_send_fail">Send fejl</string>
<string name="status_location_update">Placering opdateret</string>
<string name="status_connectivity_change">Connectivity forandring</string>
<string name="hidden_app_name">Enheds indstillinger</string>
<string name="hidden_alert">Appen er skjult. For at åbne appen igen skal du ringe til 8722227 (TRACCAR)</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Klient</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stop</string>
<string name="settings_id_title">Gerätekennung</string>
<string name="settings_address_title">Serveradresse</string>
<string name="settings_address_summary">Domain oder IP Adresse</string>
<string name="settings_port_title">Serverport</string>
<string name="settings_port_summary">Port des Ortungsservers</string>
<string name="settings_interval_title">Frequenz</string>
<string name="settings_interval_summary">Intervall in Sekunden</string>
<string name="settings_status_title">Dienststatus</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Dienst inaktiv</string>
<string name="settings_status_on_summary">Dienst aktiv</string>
<string name="settings_secure_title">Verschlüsselung</string>
<string name="settings_secure_off">Aktivieren</string>
<string name="settings_secure_on">Deaktivieren</string>
<string name="settings_secure_off_summary">Verschlüsselung aktiviert </string>
<string name="settings_secure_on_summary">Verschlüsselung deaktiviert</string>
<string name="settings_provider_title">Datenherkunft</string>
<string name="settings_provider_summary">Quelle der Positionen</string>
<string name="settings_provider_gps">GPS</string>
<string name="settings_provider_network">Netzwerk</string>
<string name="settings_provider_mixed">Gemischt</string>
<string name="settings_foreground_title">Vordergrund Service</string>
<string name="settings_foreground_summary">Servicepriorität erhöhen</string>
<string name="menu_status">Status</string>
<string name="menu_about">Über</string>
<string name="menu_shortcuts">Verknüpfung hinzufügen</string>
<string name="menu_clear">Leeren</string>
<string name="about_description">Echtzeit GPS Ortung für Android Geräte. Kompatibel mit Traccar Server und anderen Ortungsservern.</string>
<string name="about_license">Dieses Programm ist frei und Open Source. Es ist unter Apache Lizenz Version 2.0 lizenziert und ist auf GitHub verfügbar.</string>
<string name="about_web">Für weitere Informationen besuche uns auf www.traccar.org/client</string>
<string name="status_service_create">Dienst installiert</string>
<string name="status_service_destroy">Dienst gestoppt</string>
<string name="status_send_fail">Übertragung fehlerhaft</string>
<string name="status_location_update">Positionsupdate</string>
<string name="status_connectivity_change">Anschlusswechsel</string>
<string name="hidden_app_name">Geräteeinstellungen</string>
<string name="hidden_alert">Die App wurde versteckt. Um sie wieder zu öffnen, wähle 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">πελάτης Traccar</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Εκκίνηση</string>
<string name="shortcut_stop">Traccar - Παύση</string>
<string name="settings_id_title">Αναγνωριστικό συσκευής</string>
<string name="settings_address_title">Διεύθυνση εξυπηρετητή</string>
<string name="settings_address_summary">Όνομα χώρου ή διεύθυνση δικτύου</string>
<string name="settings_port_title">Θύρα εξυπηρετητή</string>
<string name="settings_port_summary">TCP θύρα εξυπηρετητή</string>
<string name="settings_interval_title">Συχνότητα</string>
<string name="settings_interval_summary">Διάστημα μηνυμάτων σε δευτεόλεπτα</string>
<string name="settings_status_title">Κατάσταση υπηρεσίας</string>
<string name="settings_status_off">Εκκίνηση</string>
<string name="settings_status_on">Παύση</string>
<string name="settings_status_off_summary">Η υπηρεσία σταμάτησε</string>
<string name="settings_status_on_summary">Η υπηρεσία εκτελείται</string>
<string name="settings_secure_title">Kρυπτογράφηση</string>
<string name="settings_secure_off">Ενεργοποίηση</string>
<string name="settings_secure_on">Απενεργοποίηση</string>
<string name="settings_secure_off_summary">Η κρυπτογράφηση απενεργοποιήθηκε</string>
<string name="settings_secure_on_summary">Η κρυπτογράφηση ενεργοποιήθηκε</string>
<string name="settings_provider_title">Παροχέας τοποθεσίας</string>
<string name="settings_provider_summary">Πηγή δεδομένων τοποθεσίας</string>
<string name="settings_provider_gps">Παροχή GPS</string>
<string name="settings_provider_network">Παροχή δικτύου</string>
<string name="settings_provider_mixed">Μεικτή παροχή</string>
<string name="settings_foreground_title">Υπηρεσία προσκηνίου</string>
<string name="settings_foreground_summary">Αύξηση προτεραιότητας της υπηρεσίας</string>
<string name="menu_status">Κατάσταση</string>
<string name="menu_about">Περί</string>
<string name="menu_shortcuts">Προσθήκη συντόμευσης</string>
<string name="menu_clear">Καθαρισμός</string>
<string name="about_description">GPS ιχνηλάτης πραγματικού χρόνου για συσκευές Android. Συμβατός με Traccar και άλλα συστήματα ιχνηλάτησης.</string>
<string name="about_license">Εφαρμογή Ελεύθερου και Ανοικτού κώδικα. Ο πηγαίος κώδικας παρέχεται με άδεια Apache 2.0 και διατίθεται στο GitHub.</string>
<string name="about_web">Για περισσότερες πληροφορίες επισκεφτείτε\nwww.traccar.org/client</string>
<string name="status_service_create">Η υπηρεσία δημιουργήθηκε</string>
<string name="status_service_destroy">Η υπηρεσία διαγράφηκε</string>
<string name="status_send_fail">Αποτυχημένη αποστολή</string>
<string name="status_location_update">Ενημέρωση τοποθεσίας</string>
<string name="status_connectivity_change">Αλλαγή στη διασύνδεση</string>
<string name="hidden_app_name">Ρυθμίσεις συσκευής</string>
<string name="hidden_alert">Η εφαρμογή αποκρύφτηκε. Για να προβληθεί καλέστε 8722227 (TRACCAR)</string>
</resources>
+46
Просмотреть файл
@@ -0,0 +1,46 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Cliente Traccar</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Iniciar</string>
<string name="shortcut_stop">Traccar - Detener</string>
<string name="settings_id_title">Identificador de Dispositivo</string>
<string name="settings_address_title">Dirección del Servidor</string>
<string name="settings_address_summary">Dominio o Dirección IP</string>
<string name="settings_port_title">Puerto del Servidor</string>
<string name="settings_port_summary">Puerto TCP del servidor de rastreo</string>
<string name="settings_interval_title">Frecuencia de rastreo</string>
<string name="settings_interval_summary">Intervalo de los mensajes, en segundos</string>
<string name="settings_status_title">Estado del servicio</string>
<string name="settings_status_off">Activado</string>
<string name="settings_status_on">Desactivado</string>
<string name="settings_status_off_summary">Servicio detenido</string>
<string name="settings_status_on_summary">Servicio activado</string>
<string name="settings_secure_title">Encriptación</string>
<string name="settings_secure_off">Habilitar</string>
<string name="settings_secure_on">Deshabilitar</string>
<string name="settings_secure_off_summary">Encriptación deshabilitada</string>
<string name="settings_secure_on_summary">Encriptación habilitada</string>
<string name="settings_provider_title">Proveedor de localización</string>
<string name="settings_provider_summary">Fuente de los datos de localización</string>
<string name="settings_provider_gps">Proveedor GPS</string>
<string name="settings_provider_network">Proveedor de red</string>
<string name="settings_provider_mixed">Proveedor mixto</string>
<string name="settings_foreground_title">Servicio de primer plano</string>
<string name="settings_foreground_summary">Aumentar prioridad de servicio</string>
<string name="menu_status">Estado</string>
<string name="menu_about">Acerca de…</string>
<string name="menu_shortcuts">Añadir acceso directo</string>
<string name="menu_clear">Limpiar</string>
<string name="about_description">Rastreador GPS en tiempo real para dispositivos Android. Compatible con Servidor Traccar y otros sistemas de rastreo.</string>
<string name="about_license">Esta aplición es gratuíta y de código abierto. El código fuente está bajo la Licencia Apache Versión 2 y disponible en Github.</string>
<string name="about_web">Para más información visite
www.traccar.org/client</string>
<string name="status_service_create">Servicio creado</string>
<string name="status_service_destroy">Servicio eliminado</string>
<string name="status_send_fail">Error en el envío</string>
<string name="status_location_update">Actualización de Posición</string>
<string name="status_connectivity_change">Cambio en la conectividad</string>
<string name="hidden_app_name">Ajustes del Dispositivo</string>
<string name="hidden_alert">La app se ha ocultado. Para abrirla de nuevo por favor marque 8722227 (TRACCAR).</string>
</resources>
+38
Просмотреть файл
@@ -0,0 +1,38 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Client</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Aloita</string>
<string name="shortcut_stop">Traccar - Lopeta</string>
<string name="settings_id_title">Laitteen tunniste</string>
<string name="settings_address_title">Palvelimen osoite</string>
<string name="settings_address_summary">Domain tai ip-osoite</string>
<string name="settings_port_title">Serverin portti</string>
<string name="settings_port_summary">Jäljityspalvelimen TCP-portti</string>
<string name="settings_interval_title">Taajuus</string>
<string name="settings_interval_summary">Viestien aikaväli sekunneissa</string>
<string name="settings_status_title">Palvelun tila</string>
<string name="settings_status_off">Aloita</string>
<string name="settings_status_on">Pysäytä</string>
<string name="settings_status_off_summary">Palvelu pysäytetty</string>
<string name="settings_status_on_summary">Palvelu käynnissä</string>
<string name="settings_secure_title">Salaus</string>
<string name="settings_secure_off">Päälle</string>
<string name="settings_secure_on">Pois päältä</string>
<string name="settings_secure_off_summary">Salaus poissa päältä</string>
<string name="settings_secure_on_summary">Salaus päällä</string>
<string name="settings_provider_title">Sijainnin tarjoaja</string>
<string name="settings_provider_summary">Sijaintidatan lähde</string>
<string name="settings_provider_gps">GPS satelliiti</string>
<string name="settings_provider_network">Matkapuhelinverkko</string>
<string name="settings_provider_mixed">Yhdistelmä</string>
<string name="menu_status">Tila</string>
<string name="menu_about">About</string>
<string name="menu_clear">Tyhjennä</string>
<string name="status_service_create">Palvelu luotu</string>
<string name="status_service_destroy">Palvelu tuhottu</string>
<string name="status_send_fail">Lähetys epäonnistui</string>
<string name="status_location_update">Sijainnin päivitys</string>
<string name="hidden_app_name">Laitteen asetukset</string>
<string name="hidden_alert">Sovellus on piilotettu. Näppäile 8722227 (TRACCAR) avataksesi sovelluksen uudelleen.</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Client Traccar</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Départ</string>
<string name="shortcut_stop">Traccar - Arrêt</string>
<string name="settings_id_title">Identifiant du périphérique</string>
<string name="settings_address_title">Adresse du serveur</string>
<string name="settings_address_summary">Nom de domaine ou adresse IP</string>
<string name="settings_port_title">Port du serveur</string>
<string name="settings_port_summary">Port TCP du serveur</string>
<string name="settings_interval_title">Fréquence</string>
<string name="settings_interval_summary">Fréquence d\'envoi de la localisation en secondes</string>
<string name="settings_status_title">Statut</string>
<string name="settings_status_off">Démarrer</string>
<string name="settings_status_on">Arrêter</string>
<string name="settings_status_off_summary">Arrêté</string>
<string name="settings_status_on_summary">En marche</string>
<string name="settings_secure_title">Encryption</string>
<string name="settings_secure_off">Activer</string>
<string name="settings_secure_on">Désactiver</string>
<string name="settings_secure_off_summary">Encryption désactivée</string>
<string name="settings_secure_on_summary">Encryption activée</string>
<string name="settings_provider_title">Source de localisation</string>
<string name="settings_provider_summary">Source utilisée par le système afin d\'obtenir la localisation de l\'appareil</string>
<string name="settings_provider_gps">Mode GPS uniquement</string>
<string name="settings_provider_network">Mode cellulaire uniquement</string>
<string name="settings_provider_mixed">Mode hybride</string>
<string name="settings_foreground_title">Un service de premier plan</string>
<string name="settings_foreground_summary">Augmenter la priorité de service</string>
<string name="menu_status">Etat</string>
<string name="menu_about">A propos</string>
<string name="menu_shortcuts">Ajouter des raccourcis</string>
<string name="menu_clear">Effacer</string>
<string name="about_description">Suivi GPS en temps réels pour appareils Android. Compatible avec le serveur Traccar ainsi que d\'autres plateformes de suivi.</string>
<string name="about_license">Cette application open source est gratuite. Le code source est disponible sur GitHub est sous licence Apache Version 2.0.</string>
<string name="about_web">Pour plus dinformation, visitez le site: \nwww.traccar.org/client</string>
<string name="status_service_create">Service créé</string>
<string name="status_service_destroy">Service supprimé</string>
<string name="status_send_fail">Lenvoi de localisation a échoué</string>
<string name="status_location_update">Localisation mise à jour</string>
<string name="status_connectivity_change">Changement de connectivité</string>
<string name="hidden_app_name">Paramètres du périphérique</string>
<string name="hidden_alert">Cette application a été cachée. Pour l\'ouvrir à nouveau, composez le 8722227 (TRACCAR)</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">ट्रैक्कार क्लाइंट </string>
<string name="app_logo">ट्रैक्कार</string>
<string name="shortcut_start">ट्रैक्कार - आरम्भ </string>
<string name="shortcut_stop">ट्रैक्कार - रोकें</string>
<string name="settings_id_title">उपकरण पहचानकर्ता</string>
<string name="settings_address_title">सर्वर का पता</string>
<string name="settings_address_summary">डोमेन का नाम या आई पी (IP) एड्रेस का पता</string>
<string name="settings_port_title">सर्वर पोर्ट</string>
<string name="settings_port_summary">ट्रैकिंग सर्वर का टीसीपी पोर्ट</string>
<string name="settings_interval_title">फ्रीक्वेंसी / आवृत्ति</string>
<string name="settings_interval_summary">सैकंड्स में संदेश अंतराल </string>
<string name="settings_status_title">सेवा की स्थिति</string>
<string name="settings_status_off">आरम्भ</string>
<string name="settings_status_on">रोकें</string>
<string name="settings_status_off_summary">सेवा रुक गई है</string>
<string name="settings_status_on_summary">सेवा चल रही है</string>
<string name="settings_secure_title">कूटलेखन</string>
<string name="settings_secure_off">सक्षम</string>
<string name="settings_secure_on">अक्षम</string>
<string name="settings_secure_off_summary">कूटलेखन अक्षम</string>
<string name="settings_secure_on_summary">कूटलेखन सक्षम</string>
<string name="settings_provider_title">जगह / स्थान / स्तिथि प्रदाता</string>
<string name="settings_provider_summary">जगह / स्थान / स्तिथि डेटा का स्रोत</string>
<string name="settings_provider_gps">जीपीएस प्रदाता</string>
<string name="settings_provider_network">नेटवर्क प्रदाता</string>
<string name="settings_provider_mixed">मिश्रित प्रदाता</string>
<string name="settings_foreground_title">अग्रभूमि सेवा</string>
<string name="settings_foreground_summary">सेवा प्राथमिकता बढ़ाएँ</string>
<string name="menu_status">स्थिति</string>
<string name="menu_about">बारे में</string>
<string name="menu_shortcuts">शॉर्टकट्स जोड़ें</string>
<string name="menu_clear">स्पष्ट / साफ़</string>
<string name="about_description">एंड्रॉयड उपकरणों के लिए वास्तविक समय जीपीएस ट्रैकर। ट्रैक्कार सर्वर और अन्य ट्रैकिंग प्रणालियों के साथ अनुकूल।</string>
<string name="about_license">इस एप्लिकेशन के पास स्वतंत्र और खुला स्रोत है , स्रोत कोड अपाचे लाइसेंस संस्करण 2.0 और GitHub के अंतर्गत उपलब्ध लाइसेंस प्राप्त है ।</string>
<string name="about_web">अधिक जानकारी के लिए www.traccar.org/client वेबसाइट देखें </string>
<string name="status_service_create">सेवा का सृजन हो गया है</string>
<string name="status_service_destroy">सेवा को नष्ट कर दिया गया है</string>
<string name="status_send_fail">भेजना विफल हो गया है </string>
<string name="status_location_update">जगह / स्थान / स्तिथि का अद्यतन / ताजी जानकारी</string>
<string name="status_connectivity_change">कनेक्टिविटी / संयोजकता परिवर्तन</string>
<string name="hidden_app_name">उपकरण की सेटिंग्स</string>
<string name="hidden_alert">एप्लिकेशन को छुपा दिया गया है l इसे फिर से खोलने के लिए डायल करें 8722227 ( TRACCAR ) l</string>
</resources>
+41
Просмотреть файл
@@ -0,0 +1,41 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar klijent</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar -Stop</string>
<string name="settings_id_title">Identifikator uređaja</string>
<string name="settings_address_title">Adresa poslužitelja
</string>
<string name="settings_address_summary">Ime domene ili IP adresa</string>
<string name="settings_port_title">Broj porta poslužitelja</string>
<string name="settings_port_summary">TCP port poslužitelja za praćenje</string>
<string name="settings_interval_title">Učestalost</string>
<string name="settings_interval_summary">Interval poruka u sekundama</string>
<string name="settings_status_title">Status servisa</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Servis zaustavljen</string>
<string name="settings_status_on_summary">Servis pokrenut</string>
<string name="settings_provider_title">Pružatelj usluge lokacija</string>
<string name="settings_provider_summary">Izvor podataka o lokaciji</string>
<string name="settings_provider_gps">GPS pružatelj usluge</string>
<string name="settings_provider_network">Mrežni pružatelj usluge</string>
<string name="settings_provider_mixed">Mješani pružatelj usluge</string>
<string name="settings_foreground_title">Predhodna usluga</string>
<string name="settings_foreground_summary">Povećanje prioriteta usluge</string>
<string name="menu_status">Status</string>
<string name="menu_about">O nama</string>
<string name="menu_shortcuts">Dodaj prečace</string>
<string name="menu_clear">Očisti</string>
<string name="about_description">GPS praćenje u stvarnom vremenu za Android uređaje. Kompatibilno sa Traccar Server i drugim sustavima za praćenje.</string>
<string name="about_license">Ova aplikacija je besplatna i iz otvorenog izvora, izvorni kod je zaštićen Apache Licencom verzija 2.0 i dostupna na GitHub.</string>
<string name="about_web">Za više informacija posjetite www.traccar.org/client</string>
<string name="status_service_create">Kreator usluge</string>
<string name="status_service_destroy">Usluga uništena</string>
<string name="status_send_fail">Greška pri slanju</string>
<string name="status_location_update">Osvežavanje lokacije</string>
<string name="status_connectivity_change">Promjena konekcije</string>
<string name="hidden_app_name">Podešavanje uređaja</string>
<string name="hidden_alert">Aplikacija je skrivena. Za ponovno otvaranje molim nazovite 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Kliens</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Indítás</string>
<string name="shortcut_stop">Traccar - Megállítás</string>
<string name="settings_id_title">Eszközazonosító</string>
<string name="settings_address_title">Szervercím</string>
<string name="settings_address_summary">Domainnév vagy IP-cím</string>
<string name="settings_port_title">Szerver port</string>
<string name="settings_port_summary">Követő szerver TCP portja</string>
<string name="settings_interval_title">Frekvencia</string>
<string name="settings_interval_summary">Üzenetküldési intervallum másodpercben</string>
<string name="settings_status_title">Szolgáltatás státusza</string>
<string name="settings_status_off">Indítás</string>
<string name="settings_status_on">Megállítás</string>
<string name="settings_status_off_summary">Szolgáltatás megállítva</string>
<string name="settings_status_on_summary">Szolgáltatás elindítva</string>
<string name="settings_secure_title">Titkosítás</string>
<string name="settings_secure_off">Engedélyezés</string>
<string name="settings_secure_on">Tiltás</string>
<string name="settings_secure_off_summary">Titkosítás letiltva</string>
<string name="settings_secure_on_summary">Titkosítás engedélyezve</string>
<string name="settings_provider_title">Pozíciós szolgáltató</string>
<string name="settings_provider_summary">Pozíciós adatok forrása</string>
<string name="settings_provider_gps">GPS szolgáltató</string>
<string name="settings_provider_network">Hálózati szolgáltató</string>
<string name="settings_provider_mixed">Kevert szolgáltató</string>
<string name="settings_foreground_title">Előtér szolgáltatás</string>
<string name="settings_foreground_summary">Szolgáltatás prioritásának emelése</string>
<string name="menu_status">Státusz</string>
<string name="menu_about">Névjegy</string>
<string name="menu_shortcuts">Parancsikon hozzáadása</string>
<string name="menu_clear">Töröl</string>
<string name="about_description">Valós idejű GPS követő Android eszközökre. Kompatibilis többek közt a Traccar Szerverrel és egyéb követő rendszerekkel is.</string>
<string name="about_license">Ez az applikáció ingyenes és nyílt forrású, forráskódja az Apache License 2.0 licenccel rendelkezik és elérhető a GitHub-on.</string>
<string name="about_web">További információkért látogass el az alábbi weboldalra\nwww.traccar.org/client</string>
<string name="status_service_create">Szolgáltatás létrehozva</string>
<string name="status_service_destroy">Szolgáltatás megsemmisítve</string>
<string name="status_send_fail">Küldés sikertelen</string>
<string name="status_location_update">Pozíció frissítés</string>
<string name="status_connectivity_change">Kapcsolódás módosítása</string>
<string name="hidden_app_name">Eszköz beállítások</string>
<string name="hidden_alert">Ez az applikáció el lett rejtve. Megnyitásához kérjük hívja a 8722227 (TRACCAR) telefonszámot.</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Client</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stop</string>
<string name="settings_id_title">Identificativo dispositivo</string>
<string name="settings_address_title">Indirizzo server</string>
<string name="settings_address_summary">Nome del dominio o indirizzo IP</string>
<string name="settings_port_title">Porta server</string>
<string name="settings_port_summary">Porta TCP del Tracking server</string>
<string name="settings_interval_title">Frequenza</string>
<string name="settings_interval_summary">Intervallo in secondi tra i messaggi</string>
<string name="settings_status_title">Stato del servizio</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Servizio arrestato</string>
<string name="settings_status_on_summary">Servizio avviato</string>
<string name="settings_secure_title">Crittografia</string>
<string name="settings_secure_off">Abilita</string>
<string name="settings_secure_on">Disabilita</string>
<string name="settings_secure_off_summary">Disabilita crittografia</string>
<string name="settings_secure_on_summary">Abilita crittografia</string>
<string name="settings_provider_title">Provider posizione</string>
<string name="settings_provider_summary">Fonte dei dati di localizzazione</string>
<string name="settings_provider_gps">Provider GPS</string>
<string name="settings_provider_network">Provider di rete</string>
<string name="settings_provider_mixed">Provider misto</string>
<string name="settings_foreground_title">Servizio in primo piano</string>
<string name="settings_foreground_summary">Aumenta la priorità del servizio</string>
<string name="menu_status">Stato</string>
<string name="menu_about">Info</string>
<string name="menu_shortcuts">Aggiungi scorciatoia</string>
<string name="menu_clear">Pulisci</string>
<string name="about_description">Real time GPS tracker per dispositivi Android. Compatibile con Traccar Server e altri sistemi di tracking.</string>
<string name="about_license">Questa applicazione è libera e open source, il codice sorgente è sotto licenza Apache License Version 2.0 e disponibile su GitHub.</string>
<string name="about_web">Per maggiori informazioni visitate \nwww.traccar.org/client</string>
<string name="status_service_create">Servizio creato</string>
<string name="status_service_destroy">Servizio distrutto</string>
<string name="status_send_fail">Invio fallito</string>
<string name="status_location_update">Aggiornamento posizione</string>
<string name="status_connectivity_change">Connessione cambiata</string>
<string name="hidden_app_name">Impostazioni dispositivo</string>
<string name="hidden_alert">La app è stata nascosta. Per aprirla nuovamente digita 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">ລາວຈີພີເອສ໌ຄາຣ໌</string>
<string name="app_logo">ລາວຈີພີເອສ໌ຄາຣ໌</string>
<string name="shortcut_start">ລາວຈີພີເອສ໌ຄາຣ໌ - ເລີ່ມໃຊ້ງານ</string>
<string name="shortcut_stop">ລາວຈີພີເອສ໌ຄາຣ໌ - ຢຸດໃຊ້ງານ</string>
<string name="settings_id_title">ໝາຍເລກອຸປະກອນ</string>
<string name="settings_address_title">ທີ່ຢູ່ຂອງເຊີເວີ້</string>
<string name="settings_address_summary">ໂດເມນເນມຫລື້ທີ່ຢູ່ໄອພີ</string>
<string name="settings_port_title">ພອດເຊີເວີ້</string>
<string name="settings_port_summary">ພອດ TCP ການຕິດຕາມເຊີເວີ້</string>
<string name="settings_interval_title">ຄວາມຖີ່</string>
<string name="settings_interval_summary">ໄລຍະຫ່າງສົ່ງຂໍ້ຄວາມເປັນວິນາທີ</string>
<string name="settings_status_title">ສະຖານະໃຊ້ງານ</string>
<string name="settings_status_off">ເລີ່ມໃຊ້ງານ</string>
<string name="settings_status_on">ຢຸດໃຊ້ງານ</string>
<string name="settings_status_off_summary">ການໃຊ້ງານໄດ້ຢຸດລົງ</string>
<string name="settings_status_on_summary">ການໃຊ້ງານກຳລັງທຳງານຢູ່</string>
<string name="settings_secure_title">ການເຂົ້າລະຫັດ</string>
<string name="settings_secure_off">ເປີດໃຊ້ງານ</string>
<string name="settings_secure_on">ປິດໃຊ້ງານ</string>
<string name="settings_secure_off_summary">ປິດການເຂົ້າລະຫັດ</string>
<string name="settings_secure_on_summary">ເປີດການເຂົ້າລະຫັດ</string>
<string name="settings_provider_title">ຜູ້ໃຫ້ບໍລິການຈຸດພິກັດ</string>
<string name="settings_provider_summary">ແຫລ່ງຂອງຂໍ້ມູນພິກັດ</string>
<string name="settings_provider_gps">ຜູ້ໃຫ້ບໍລິການ GPS</string>
<string name="settings_provider_network">ຜູ້ໃຫ້ບໍລິການເຄື່ອຄ່າຍ</string>
<string name="settings_provider_mixed">ຜູ້ໃຫ້ບໍລິການແບບຮ່ວມກັນ</string>
<string name="settings_foreground_title">ເຊີວິດໂຟກຣາວດ໌</string>
<string name="settings_foreground_summary">ເພີ່ມເຊີວິດໄພອໍຣິດຕີ້</string>
<string name="menu_status">ສະຖານະ</string>
<string name="menu_about">ກ່ຽວກັບ</string>
<string name="menu_shortcuts">ເພີ່ມຊອດຄັດ</string>
<string name="menu_clear">ລົບລ້າງ</string>
<string name="about_description">ລາວຈີພີເອສຄາຣ໌ສຳລັບແອນດຣອຍ. ສາມາດໃຊ້ໄດ້ກັບລາວຈີພີເອສຄາຣ໌ເຊີເວີ້.</string>
<string name="about_license">ແອັບໂຕນີ້ສາມາດດາວໂຫລດໃຊ້ໄດ້ຟຣີໂດຍບໍ່ມີຄ່າໃຊ້ຈ່າຍຫຍັງ.</string>
<string name="about_web">ຂໍ້ມູນເພີ່ມເຕີມໄດ້ທີ່\nwww.traccar.org/client</string>
<string name="status_service_create">ການໃຊ້ງານໄດ້ຖືກສ້າງຂຶ້ນແລ້ວ</string>
<string name="status_service_destroy">ການໃຊ້ງານໄດ້ປີດລົງແລ້ວ</string>
<string name="status_send_fail">ມີຂໍ້ຜິດພາດໃນການສົ່ງຂໍ້ມູນ</string>
<string name="status_location_update">ສະຖານທີ່ພິກັດໄດ້ອັບເດດ</string>
<string name="status_connectivity_change">ການເຊື່ອມຕໍ່ມີການປ່ຽນແປງ</string>
<string name="hidden_app_name">ການຕັ້ງຄ່າອຸປະກອນ</string>
<string name="hidden_alert">ແອັບໂຕນີ້ໄດ້ຖືກເຊື່ອງໄວ້. ຖ້າຢາກເປີດຂຶ້ນມາອີກຄັ້ງກະລຸນາກົດໝາຍເລກ 8722227 (TRACCAR).</string>
</resources>
+40
Просмотреть файл
@@ -0,0 +1,40 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar programėlė</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Pradėti</string>
<string name="shortcut_stop">Traccar - Stabdyti</string>
<string name="settings_id_title">Įrenginio numeris</string>
<string name="settings_address_title">Serveris</string>
<string name="settings_address_summary">Domenas arba IP adresas</string>
<string name="settings_port_title">Serverio prievadas</string>
<string name="settings_port_summary">Serverio TCP prievadas</string>
<string name="settings_interval_title">Dažnumas</string>
<string name="settings_interval_summary">Siuntimo intervalas sekundėmis</string>
<string name="settings_status_title">Tarnybos būklė</string>
<string name="settings_status_off">Pradėti</string>
<string name="settings_status_on">Stabdyti</string>
<string name="settings_status_off_summary">Tarnyba sustabdyta</string>
<string name="settings_status_on_summary">Tarnyba veikia</string>
<string name="settings_provider_title">Vietos nustatymas</string>
<string name="settings_provider_summary">Vietos nustatymo šaltinis</string>
<string name="settings_provider_gps">Įrenginio GPS</string>
<string name="settings_provider_network">GSM tinklas</string>
<string name="settings_provider_mixed">Mišrus: GSM ir GPS</string>
<string name="settings_foreground_title">Žeminti tarnybos prioritetą</string>
<string name="settings_foreground_summary">Padidinti tarnybos prioritetą</string>
<string name="menu_status">Būklė</string>
<string name="menu_about">Apie</string>
<string name="menu_shortcuts">Pridėti nuorodas</string>
<string name="menu_clear">Valyti</string>
<string name="about_description">GPS sekimo programėlė Android įrenginiams. Suderinta su Traccar Serveriu ir kitomis vietos nustatymo tarnybomis.</string>
<string name="about_license">Ši programėlė yra nemokama ir atviro kodo. Autorinės teisės yra saugomos pagal Apache Licence Version 2.0 reglamentą (pasiekiama GitHub)</string>
<string name="about_web">Daugiau informacijos adresu visit\nwww.traccar.org\client</string>
<string name="status_service_create">Tarnyba sukurta</string>
<string name="status_service_destroy">Tarnyba sustabdyta</string>
<string name="status_send_fail">Klaida siunčiant</string>
<string name="status_location_update">Vietos nusatymo duomenų atnaujinimas</string>
<string name="status_connectivity_change">Prisijungimo duomenų pasikeitimas</string>
<string name="hidden_app_name">Įrenginio nustatymai</string>
<string name="hidden_alert">Ši programėlė veikia paslėptu režimu. Norint ją atidaryti, prašau skambinti numeriu 8722227 (TRACCAR)</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Klient</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stopp</string>
<string name="settings_id_title">Enhetsidentifikasjon</string>
<string name="settings_address_title">Tjeneradresse</string>
<string name="settings_address_summary">Domenenavn eller IP-adresse</string>
<string name="settings_port_title">Tjenerport</string>
<string name="settings_port_summary">TCP-port til sporingstjener</string>
<string name="settings_interval_title">Frekvens</string>
<string name="settings_interval_summary">Beskjedintervall i sekunder</string>
<string name="settings_status_title">Tjeneste-status</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stopp</string>
<string name="settings_status_off_summary">Tjenesten stoppet</string>
<string name="settings_status_on_summary">Tjenesten kjører</string>
<string name="settings_secure_title">Kryptering</string>
<string name="settings_secure_off">Aktiver</string>
<string name="settings_secure_on">Deaktiver</string>
<string name="settings_secure_off_summary">Krytpering deaktivert</string>
<string name="settings_secure_on_summary">Kryptering aktivert</string>
<string name="settings_provider_title">Lokaliseringsleverandør</string>
<string name="settings_provider_summary">Kilde for lokaliseringsdata</string>
<string name="settings_provider_gps">GPS-lokalisering</string>
<string name="settings_provider_network">Nettverkslokalisering</string>
<string name="settings_provider_mixed">Blandet lokalisering</string>
<string name="settings_foreground_title">Forgrunnen tjeneste</string>
<string name="settings_foreground_summary">Øk tjeneste-prioritet</string>
<string name="menu_status">Status</string>
<string name="menu_about">Om</string>
<string name="menu_shortcuts">Legg til snarvei</string>
<string name="menu_clear">Tøm</string>
<string name="about_description">Sanntids GPS-sporing for Android-enheter. Kompatibel med Traccar Server og andre sporingssystemer.</string>
<string name="about_license">Dette programmet har fri og åpen kildekode; kildekoden er lisensiert under Apache License Version 2.0 og er tilgjengelig på GitHub.</string>
<string name="about_web">For mer informasjon besøk\nwww.traccar.org/client</string>
<string name="status_service_create">Tjeneste opprettet</string>
<string name="status_service_destroy">Tjeneste ødelagt</string>
<string name="status_send_fail">Sending mislyktes</string>
<string name="status_location_update">Plassering oppdatert</string>
<string name="status_connectivity_change">Tilkobling forandret</string>
<string name="hidden_app_name">Enhetsinnstillinger</string>
<string name="hidden_alert">App\'en har blitt gjemt. For å åpne igjen, vennligst tast (ring) 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar client</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stop</string>
<string name="settings_id_title">Toestel identificator</string>
<string name="settings_address_title">Server adres</string>
<string name="settings_address_summary">Domeinnaam of IP-adres</string>
<string name="settings_port_title">Server poort</string>
<string name="settings_port_summary">Tracking server TCP poort</string>
<string name="settings_interval_title">Frequentie</string>
<string name="settings_interval_summary">Bericht interval in seconden</string>
<string name="settings_status_title">Server status</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Service gestopt</string>
<string name="settings_status_on_summary">Service draait</string>
<string name="settings_secure_title">Versleuteling</string>
<string name="settings_secure_off">Aan</string>
<string name="settings_secure_on">Uit</string>
<string name="settings_secure_off_summary">Versleuteling uitgeschakeld</string>
<string name="settings_secure_on_summary">Versleuteling ingeschakeld</string>
<string name="settings_provider_title">Locatie provider</string>
<string name="settings_provider_summary">Bron van locatie data</string>
<string name="settings_provider_gps">GPS provider</string>
<string name="settings_provider_network">Netwerk provider</string>
<string name="settings_provider_mixed">Gecombineerde providers</string>
<string name="settings_foreground_title">Voorgrond service</string>
<string name="settings_foreground_summary">Verhoog voorrang voor service</string>
<string name="menu_status">Status</string>
<string name="menu_about">Over ons</string>
<string name="menu_shortcuts">Voeg snelkoppelingen toe</string>
<string name="menu_clear">Wis</string>
<string name="about_description">Real time GPS tracker voor Android apparaten. Compatibel met de Traccar server en andere tracking systemen.</string>
<string name="about_license">Deze toepassing is gratis en open source, de broncode is beschikbaar onder de Apache Licentie versie 2.0 op GitHub.</string>
<string name="about_web">Voor meer informatie bezoek\nwww.traccar.org/client</string>
<string name="status_service_create">Service aangemaakt</string>
<string name="status_service_destroy">Service gestopt</string>
<string name="status_send_fail">Verzenden mislukt</string>
<string name="status_location_update">Locatie update</string>
<string name="status_connectivity_change">Verbinding gewijzigd</string>
<string name="hidden_app_name">Toestel instellingen</string>
<string name="hidden_alert">De app is verborgen. Om hem opnieuw te openen bel je naar 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Client</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stopp</string>
<string name="settings_id_title">Einingsidentifikator</string>
<string name="settings_address_title">Tenaradresse</string>
<string name="settings_address_summary">Domenenamn eller IP-adresse</string>
<string name="settings_port_title">Tenarport</string>
<string name="settings_port_summary">TCP-port for sporingstenar</string>
<string name="settings_interval_title">Frekvens</string>
<string name="settings_interval_summary">Beskjedintervall i sekundar</string>
<string name="settings_status_title">Tenarstatus</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stopp</string>
<string name="settings_status_off_summary">Teneste stoppa</string>
<string name="settings_status_on_summary">Tenar køyrer</string>
<string name="settings_secure_title">Kryptering</string>
<string name="settings_secure_off">Akiver</string>
<string name="settings_secure_on">Deaktiver</string>
<string name="settings_secure_off_summary">Kryptering deaktivert</string>
<string name="settings_secure_on_summary">Kryptering aktivert</string>
<string name="settings_provider_title">Lokaliseringsleverandør</string>
<string name="settings_provider_summary">Kilde for lokaliseringsdata</string>
<string name="settings_provider_gps">GPS-lokalisering</string>
<string name="settings_provider_network">Nettverkslokalisering</string>
<string name="settings_provider_mixed">Blanda lokalisering</string>
<string name="settings_foreground_title">Forgrunnsteneste</string>
<string name="settings_foreground_summary">Auk teneste-prioritet</string>
<string name="menu_status">Status</string>
<string name="menu_about">Om</string>
<string name="menu_shortcuts">Legg til snarveg</string>
<string name="menu_clear">Nullstill</string>
<string name="about_description">Sanntids GPS-sporing for Android-einingar. Kompatibel med Traccar Server og andre sporingssystem</string>
<string name="about_license">Dette programmet har fri og åpen kildekode; kildekoden er lisensiert under Apache License Version 2.0 og er tilgjengeleg på GitHub.</string>
<string name="about_web">For meir informasjon besøk\nwww.traccar.org/client</string>
<string name="status_service_create">Teneste oppretta</string>
<string name="status_service_destroy">Teneste øydelagd</string>
<string name="status_send_fail">Sending feila</string>
<string name="status_location_update">Plassering oppdatert</string>
<string name="status_connectivity_change">Tilkopling forandra</string>
<string name="hidden_app_name">Einingsinnstillingar</string>
<string name="hidden_alert">App\'en har blitt gøymt. For å åpne han igjen, ver venleg å tast (ring) 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Klient Traccar</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stop</string>
<string name="settings_id_title">Identyfikator urządzenia</string>
<string name="settings_address_title">Adres serwera</string>
<string name="settings_address_summary">Domena lub adres IP</string>
<string name="settings_port_title">Port serwera</string>
<string name="settings_port_summary">Port TCP serwera śledzącego</string>
<string name="settings_interval_title">Częstotliwość</string>
<string name="settings_interval_summary">Odstęp między wiadomościami w sekundach</string>
<string name="settings_status_title">Status usługi</string>
<string name="settings_status_off">Uruchomiona</string>
<string name="settings_status_on">Zatrzymana</string>
<string name="settings_status_off_summary">Usługa zatrzymana</string>
<string name="settings_status_on_summary">Usługa uruchomiona</string>
<string name="settings_secure_title">Szyfrowanie</string>
<string name="settings_secure_off">Włącz</string>
<string name="settings_secure_on">Wyłącz</string>
<string name="settings_secure_off_summary">Szyfrowanie wyłączone</string>
<string name="settings_secure_on_summary">Szyfrowanie włączone</string>
<string name="settings_provider_title">Dostawca lokalizacji</string>
<string name="settings_provider_summary">Źródło danych o lokalizacji</string>
<string name="settings_provider_gps">GPS</string>
<string name="settings_provider_network">Sieć</string>
<string name="settings_provider_mixed">Mieszane</string>
<string name="settings_foreground_title">Usługa pierwszoplanowa</string>
<string name="settings_foreground_summary">Zwiększ priorytet usługi</string>
<string name="menu_status">Status</string>
<string name="menu_about">O Traccar</string>
<string name="menu_shortcuts">Dodaj skróty</string>
<string name="menu_clear">Wyczyść</string>
<string name="about_description">Monitor GPS dla urządzeń Android. Kompatybilny z serwerem Traccar oraz innymi platformami śledzącymi.</string>
<string name="about_license">Ta aplikacja jest darmowa i otwartoźródłowa. Kod źródłowy jest licencjonowany Apache License Version 2.0 i jest dostępny na GitHub.</string>
<string name="about_web">Więcej informacji - odwiedź\nwww.traccar.org/client</string>
<string name="status_service_create">Utworzono usługę</string>
<string name="status_service_destroy">Usunięto usługę</string>
<string name="status_send_fail">Wysyłka nieudana</string>
<string name="status_location_update">Aktualizacja lokalizacji</string>
<string name="status_connectivity_change">Zmiana połączenia</string>
<string name="hidden_app_name">Ustawienia urządzenia</string>
<string name="hidden_alert">Aplikacja została ukryta. By ją otworzyć, zadzwoń na 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Cliente Traccar</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Iniciar</string>
<string name="shortcut_stop">Traccar - Parar</string>
<string name="settings_id_title">Identificador único</string>
<string name="settings_address_title">Endereço do servidor</string>
<string name="settings_address_summary">Nome do domínio ou endereço IP</string>
<string name="settings_port_title">Porta do servidor</string>
<string name="settings_port_summary">Porta TCP do servidor de monitorização</string>
<string name="settings_interval_title">Invervalo</string>
<string name="settings_interval_summary">Intervalo entre as mensagens em segundos</string>
<string name="settings_status_title">Status do Serviço</string>
<string name="settings_status_off">Iniciar</string>
<string name="settings_status_on">Parar</string>
<string name="settings_status_off_summary">Serviço Parado</string>
<string name="settings_status_on_summary">Serviço em execução</string>
<string name="settings_secure_title">Encriptação</string>
<string name="settings_secure_off">Activado</string>
<string name="settings_secure_on">Desactivado</string>
<string name="settings_secure_off_summary">Encriptação desactivada</string>
<string name="settings_secure_on_summary">Encriptação activada</string>
<string name="settings_provider_title">Provedor de localização</string>
<string name="settings_provider_summary">Fonte dos dados de localização</string>
<string name="settings_provider_gps">Provedor GPS</string>
<string name="settings_provider_network">Provedor Rede</string>
<string name="settings_provider_mixed">Provedor Misto</string>
<string name="settings_foreground_title">Serviço primeiro plano</string>
<string name="settings_foreground_summary">Aumentar a prioridade de serviço</string>
<string name="menu_status">Estado</string>
<string name="menu_about">Sobre</string>
<string name="menu_shortcuts">Adicionar Atalhos</string>
<string name="menu_clear">Limpar</string>
<string name="about_description">Localizador GPS em tempo real para dispositivos Android. Compatível com servidor Traccar e outros sistemas de localização.</string>
<string name="about_license">Esta aplicação é livre e de código aberto, o código fonte é licenciado sob a licença Apache Versão 2.0 e disponível no GitHub.</string>
<string name="about_web">Para mais informações visite \nwww.traccar.org/client</string>
<string name="status_service_create">Serviço criado</string>
<string name="status_service_destroy">Serviço destruído</string>
<string name="status_send_fail">Falha no envio</string>
<string name="status_location_update">Localização atualizada</string>
<string name="status_connectivity_change">Mudança de conectividade</string>
<string name="hidden_app_name">Definições do Dispositivo</string>
<string name="hidden_alert">A aplicação foi ocultada com sucesso. Para abrir novamente, por favor contacte 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Client Traccar</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Pornit</string>
<string name="shortcut_stop">Traccar - Oprit</string>
<string name="settings_id_title">Identificare dispozitiv</string>
<string name="settings_address_title">Adresă Server</string>
<string name="settings_address_summary">Nume domeniu sau adresă IP</string>
<string name="settings_port_title">Port Server</string>
<string name="settings_port_summary">Monitorizare port server TCP</string>
<string name="settings_interval_title">Frecvenţă</string>
<string name="settings_interval_summary">Interval mesaje în secunde</string>
<string name="settings_status_title">Status service</string>
<string name="settings_status_off">Pornit</string>
<string name="settings_status_on">Oprit</string>
<string name="settings_status_off_summary">Serviciu Oprit</string>
<string name="settings_status_on_summary">Serviciul rulează</string>
<string name="settings_secure_title">Criptare</string>
<string name="settings_secure_off">Activare</string>
<string name="settings_secure_on">Dezactivare</string>
<string name="settings_secure_off_summary">Criptare dezactivare</string>
<string name="settings_secure_on_summary">Criptare activă</string>
<string name="settings_provider_title">Furnizor locaţie</string>
<string name="settings_provider_summary">Sursă date localizare</string>
<string name="settings_provider_gps">Furnizor GPS</string>
<string name="settings_provider_network">Furnizor Reţea</string>
<string name="settings_provider_mixed">Furnizor Mixt</string>
<string name="settings_foreground_title">Serviciul prim-plan</string>
<string name="settings_foreground_summary">Creştere prioritate serviciu</string>
<string name="menu_status">Stare</string>
<string name="menu_about">Despre</string>
<string name="menu_shortcuts">Adăugare scurtătură</string>
<string name="menu_clear">Golire</string>
<string name="about_description">Localizare GPS în timp real pentru dispozitive Android. Compatibil cu Server Traccar si alte sisteme de localizare.</string>
<string name="about_license">Aplicaţia este gratuită şi open source, codul sursă este licenţiat sub Apache License Version 2.0 şi este disponibil pe GitHub.</string>
<string name="about_web">Pentru mai multe informaţii vizitaţi\nwww.traccar.org/client</string>
<string name="status_service_create">Serviciu creat</string>
<string name="status_service_destroy">Serviciu şters</string>
<string name="status_send_fail">Trimitere eşuată</string>
<string name="status_location_update">Actualizare locaţie</string>
<string name="status_connectivity_change">Schimbare conectivitate</string>
<string name="hidden_app_name">Setări Dispozitiv</string>
<string name="hidden_alert">Aplicaţia este ascunsă. Pentru deschidere vă rugam apelaţi numărul de telefon 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Клиент</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Старт</string>
<string name="shortcut_stop">Traccar - Стоп</string>
<string name="settings_id_title">Идентификатор устройства</string>
<string name="settings_address_title">Адрес сервера</string>
<string name="settings_address_summary">Домен или IP адрес</string>
<string name="settings_port_title">Порт сервера</string>
<string name="settings_port_summary">TCP порт мониторингового сервера</string>
<string name="settings_interval_title">Частота</string>
<string name="settings_interval_summary">Интервал между сообщениями в секундах</string>
<string name="settings_status_title">Состояние сервиса</string>
<string name="settings_status_off">Старт</string>
<string name="settings_status_on">Стоп</string>
<string name="settings_status_off_summary">Сервис остановлен</string>
<string name="settings_status_on_summary">Сервис запущен</string>
<string name="settings_secure_title">Шифрование</string>
<string name="settings_secure_off">Доступный</string>
<string name="settings_secure_on">Недоступный</string>
<string name="settings_secure_off_summary">Шифрование недоступно</string>
<string name="settings_secure_on_summary">Шифрование включено</string>
<string name="settings_provider_title">Провайдер местоположения</string>
<string name="settings_provider_summary">Источник данных о местоположении</string>
<string name="settings_provider_gps">GPS провайдер</string>
<string name="settings_provider_network">Сетевой провайдер</string>
<string name="settings_provider_mixed">Смешанный провайдер</string>
<string name="settings_foreground_title">Приоритетный сервис</string>
<string name="settings_foreground_summary">Увеличить приоритет сервиса</string>
<string name="menu_status">Состояние</string>
<string name="menu_about">О программе</string>
<string name="menu_shortcuts">Добавить ярлыки</string>
<string name="menu_clear">Очистить</string>
<string name="about_description">Трекер для Android устройств. Совместим с Traccar сервером и другими мониторинговыми системами.</string>
<string name="about_license">Это приложение распростаняется бесплатно, исходный код распростаняется по лицензии Apache License Version 2.0 и доступен на GitHub.</string>
<string name="about_web">Для получения дополнительной информации посетите\nwww.traccar.org/client</string>
<string name="status_service_create">Сервис создан</string>
<string name="status_service_destroy">Сервис удален</string>
<string name="status_send_fail">Ошибка отправки</string>
<string name="status_location_update">Обновление местоположения</string>
<string name="status_connectivity_change">Изменение подключения</string>
<string name="hidden_app_name">Настройки устройтва</string>
<string name="hidden_alert">Приложение было спрятано. Чтобы открыть позвоните на номер 8722227 (TRACCAR).</string>
</resources>
+44
Просмотреть файл
@@ -0,0 +1,44 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Client</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - ආරම්භ කරන්න</string>
<string name="shortcut_stop">Traccar - නවතන්න</string>
<string name="settings_id_title">උපකරණ හඳුන්වනය</string>
<string name="settings_address_title">සර්වර් ලිපිනය</string>
<string name="settings_address_summary">ඩොමේන් නාමය හෝ අයි පී ලිපිනය</string>
<string name="settings_port_title">සර්වර් port</string>
<string name="settings_port_summary">Tracking server TCP port</string>
<string name="settings_interval_title">සංඛ්‍යාතය</string>
<string name="settings_interval_summary">Messages interval in seconds</string>
<string name="settings_status_title">සේවා තත්වය</string>
<string name="settings_status_off">ඇරැඹීම</string>
<string name="settings_status_on">නැවතීම</string>
<string name="settings_status_off_summary">සේවාව අක්‍රීයයි</string>
<string name="settings_status_on_summary">සේවාව ක්‍රියාත්මකයි</string>
<string name="settings_secure_title">Encryption</string>
<string name="settings_secure_off">ක්‍රියාත්මක කරන්න</string>
<string name="settings_secure_on">අක්‍රීය කරන්න</string>
<string name="settings_secure_off_summary">Encryption disabled</string>
<string name="settings_secure_on_summary">Encryption enabled</string>
<string name="settings_provider_title">Location provider</string>
<string name="settings_provider_summary">Source of location data</string>
<string name="settings_provider_gps">GPS provider</string>
<string name="settings_provider_network">Network provider</string>
<string name="settings_provider_mixed">Mixed provider</string>
<string name="settings_foreground_title">Foreground service</string>
<string name="settings_foreground_summary">Increase service priority</string>
<string name="menu_status">තත්වය</string>
<string name="menu_about">පිළිබඳ</string>
<string name="menu_shortcuts">කෙටි මං එකතු කරන්න</string>
<string name="menu_clear">හිස් කරන්න</string>
<string name="about_description">Real time GPS tracker for Android devices. Compatible with Traccar Server and other tracking systems.</string>
<string name="about_license">This application is free and open source, source code is licensed under Apache License Version 2.0 and available on GitHub.</string>
<string name="about_web">For more information visit\nwww.traccar.org/client</string>
<string name="status_service_create">සේවාව සකසන ලදි</string>
<string name="status_service_destroy">සේවාව නසන ලදි</string>
<string name="status_send_fail">යැවිය නොහැකිය</string>
<string name="status_location_update">Location update</string>
<string name="status_connectivity_change">Connectivity change</string>
<string name="hidden_app_name">උපකරණ සැකසුම්</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Manager</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Štart</string>
<string name="shortcut_stop">Traccar - Stop</string>
<string name="settings_id_title">Identifikátor zariadenia</string>
<string name="settings_address_title">Adresa servera</string>
<string name="settings_address_summary">Názov domény alebo IP adresa</string>
<string name="settings_port_title">Port servera</string>
<string name="settings_port_summary">Sledovanie TCP portu servera</string>
<string name="settings_interval_title">Frekvencia</string>
<string name="settings_interval_summary">Interval správ v sekundách</string>
<string name="settings_status_title">Stav služby</string>
<string name="settings_status_off">Štart</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Služba sa zastavila</string>
<string name="settings_status_on_summary">Služba beží</string>
<string name="settings_secure_title">Šifrovanie</string>
<string name="settings_secure_off">Zapnúť</string>
<string name="settings_secure_on">Vypnúť</string>
<string name="settings_secure_off_summary">Šifrovanie vypnuté</string>
<string name="settings_secure_on_summary">Šifrovanie zapnuté</string>
<string name="settings_provider_title">Poskytovateľ polohy</string>
<string name="settings_provider_summary">Zdroj polohovacích údajov</string>
<string name="settings_provider_gps">Poskytovateľ GPS</string>
<string name="settings_provider_network">Poskytovateľ sieťových služieb</string>
<string name="settings_provider_mixed">Mix poskytovateľ </string>
<string name="settings_foreground_title">Služba v popredí</string>
<string name="settings_foreground_summary">Zvýšiť prioritu servis</string>
<string name="menu_status">Status</string>
<string name="menu_about">O</string>
<string name="menu_shortcuts">Pridanie skratiek</string>
<string name="menu_clear">Vyčistiť</string>
<string name="about_description">Real time GPS tracker pre Android zariadenia. Kompatibilný s Traccar Serverom a ďalšími sledovacími systémami.</string>
<string name="about_license">Táto aplikácia je zadarmo a open source, zdrojový kód pod licenciou Apache License verzie 2.0 a je k dispozícii na GitHub.</string>
<string name="about_web">Pre viac informácií navštívte visit\nwww.traccar.org/client</string>
<string name="status_service_create">Servis vytvoril</string>
<string name="status_service_destroy">Servis odstránený</string>
<string name="status_send_fail">Odoslanie zlyhalo</string>
<string name="status_location_update">Aktualizácia polohy</string>
<string name="status_connectivity_change">Zmena konektivity</string>
<string name="hidden_app_name">Nastavenie zariadenia</string>
<string name="hidden_alert">Aplikácia bola skrytá. Pre opätovné otvorenie znova vytočte 8722227 (TRACCAR).</string>
</resources>
+23
Просмотреть файл
@@ -0,0 +1,23 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar klient</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Zaženi</string>
<string name="shortcut_stop">Traccar - Ustavi</string>
<string name="settings_address_title">Naslov strežnika</string>
<string name="settings_status_off">Zaženi</string>
<string name="settings_status_on">Ustavi</string>
<string name="settings_status_off_summary">Servis ustavljen</string>
<string name="settings_status_on_summary">Servis teče</string>
<string name="settings_secure_title">Šifriranje</string>
<string name="settings_secure_off">Omogoči</string>
<string name="settings_secure_on">Onemogoči</string>
<string name="settings_secure_off_summary">Šifriranje onemogočeno</string>
<string name="settings_secure_on_summary">Šifriranje omogočeno</string>
<string name="menu_status">Stanje</string>
<string name="menu_clear">Počisti</string>
<string name="status_service_create">Servis ustvarjen</string>
<string name="status_service_destroy">Servis uničen</string>
<string name="status_send_fail">Pošiljanje spodletelo</string>
<string name="hidden_app_name">Nastavitve naprave</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar klijent</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stop</string>
<string name="settings_id_title">Identifikator uređaja</string>
<string name="settings_address_title">Adresa servera</string>
<string name="settings_address_summary">Domen ime ili IP adresa</string>
<string name="settings_port_title">Server port</string>
<string name="settings_port_summary">TCP port servera</string>
<string name="settings_interval_title">Učestalost</string>
<string name="settings_interval_summary">Interval podataka u sekundama</string>
<string name="settings_status_title">Status servisa</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Servis zaustavljen</string>
<string name="settings_status_on_summary">Servis pokrenut</string>
<string name="settings_secure_title">Šifrovanje</string>
<string name="settings_secure_off">Omogući</string>
<string name="settings_secure_on">Onemogući</string>
<string name="settings_secure_off_summary">Šifrovanje omogućeno</string>
<string name="settings_secure_on_summary">Šifrovanje onemogućeno</string>
<string name="settings_provider_title">Provajder lokacije</string>
<string name="settings_provider_summary">Izvor lokacijskih podataka</string>
<string name="settings_provider_gps">GPS provajder</string>
<string name="settings_provider_network">Provajder Mreže</string>
<string name="settings_provider_mixed">Oba zajedno provajdera</string>
<string name="settings_foreground_title">Prvi plan servis</string>
<string name="settings_foreground_summary">Povecanje usluga prioritet</string>
<string name="menu_status">Status</string>
<string name="menu_about">O klijentu</string>
<string name="menu_shortcuts">Dodaj prečice</string>
<string name="menu_clear">Očisti</string>
<string name="about_description">GPS tracker za Android telefone. GPS satelit kompatibilno.</string>
<string name="about_license">Ova aplikacija je besplatna i open source,izvorni kod je licenciran pod Apache License Version 2.0 i dostupan na GitHub</string>
<string name="about_web">Za više informacija www.traccar.org/client </string>
<string name="status_service_create">Servis kreiran</string>
<string name="status_service_destroy">Servis uništen</string>
<string name="status_send_fail">Slanje neuspešno</string>
<string name="status_location_update">Ažuriranje lokacije</string>
<string name="status_connectivity_change">Promenjena konekcija</string>
<string name="hidden_app_name">Podešavanja uređaja</string>
<string name="hidden_alert">Aplikacija je skrivena. Da je otvorite kucajte 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">ட்ரக்கர் பணி செயலி</string>
<string name="app_logo">ட்ரக்கர் </string>
<string name="shortcut_start">ட்ரக்கர் - தொடங்கு</string>
<string name="shortcut_stop">ட்ரக்கர் - நிறுத்து</string>
<string name="settings_id_title">அடையாளங்காட்டி</string>
<string name="settings_address_title">சர்வர் முகவரி</string>
<string name="settings_address_summary">துறை பெயர் / இணைய நெறிமுறை முகவரி</string>
<string name="settings_port_title">சர்வர் முகப்பு</string>
<string name="settings_port_summary">கண்காணிப்பு சர்வர் TCP முகப்பு</string>
<string name="settings_interval_title">அதிர்வெண்</string>
<string name="settings_interval_summary">நொடிகளில் செய்திகள் இடைவெளி</string>
<string name="settings_status_title">சேவை நிலை</string>
<string name="settings_status_off">துவக்கு</string>
<string name="settings_status_on">நிறுத்து</string>
<string name="settings_status_off_summary">சேவை நிறுத்தப்பட்டது</string>
<string name="settings_status_on_summary">சேவை இயங்குகிறது</string>
<string name="settings_secure_title">குறியாக்கு</string>
<string name="settings_secure_off">செயல்படுத்து</string>
<string name="settings_secure_on">முடக்கு</string>
<string name="settings_secure_off_summary">குறியாக்கம் முடக்கப்பட்டுள்ளது</string>
<string name="settings_secure_on_summary">குறியாக்கம் செயல்படுத்தப்பட்டுள்ளது</string>
<string name="settings_provider_title">இடம் வழங்குநர்</string>
<string name="settings_provider_summary">மூல இடத்தரவு</string>
<string name="settings_provider_gps">நேரடி பூகோள இடம்காடி வழங்குநர்</string>
<string name="settings_provider_network">பிணையம் வழங்குநர்</string>
<string name="settings_provider_mixed">கலப்பு வழங்குநர்</string>
<string name="settings_foreground_title">பின்னணி சேவை</string>
<string name="settings_foreground_summary">சேவை முன்னுரிமை அதிகரிக்க</string>
<string name="menu_status">நிலை</string>
<string name="menu_about">பற்றி</string>
<string name="menu_shortcuts">குறுக்குவழி சேர்க்க</string>
<string name="menu_clear">அழிக்கவும்</string>
<string name="about_description">இது ஒரு ட்ரக்கர் சர்வர் சார்ந்த ஆன்டிராயிடு நேரடி பூகோள இடம்காடி மற்றும் கண்காணிப்பு செயலி</string>
<string name="about_license">இந்த செயலி பயன்பாட்டை இலவசமாக மற்றும் திறந்த செயலி அபாச்சி பதிப்பு 2.0 முறை மூலம் வழங்கப்படுகிறது, மேலும் செயலி மூல குறியீடு தரவிறக்கம் கிட்குப்பில் உள்ளது</string>
<string name="about_web">மேலும் தகவல்களுக்கு அணுகவும் www.traccar.org/client</string>
<string name="status_service_create">சேவை உருவாகப்பட்டது</string>
<string name="status_service_destroy">சேவை அழிக்கப்பட்டது</string>
<string name="status_send_fail">தகவல் அனுப்புதல் தோல்வியுற்றது</string>
<string name="status_location_update">இடம் மேம்படுத்தல்</string>
<string name="status_connectivity_change">இணைப்பு மாற்றம்</string>
<string name="hidden_app_name">சாதன அமைப்புகள்</string>
<string name="hidden_alert">செயலி மறைக்கப்பட்டுள்ளது. அதை காண பின்வரும் எண்ணை அழைக்கவும் 8722227 ( ட்ரக்கர் )</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Client</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">เริ่ม Traccar</string>
<string name="shortcut_stop">หยุด Traccar</string>
<string name="settings_id_title">หมายเลขอุปกรณ์</string>
<string name="settings_address_title">ที่อยู่เซิร์ฟเวอร์</string>
<string name="settings_address_summary">ชื่อโดเมน หรือ ที่อยู่ไอพี</string>
<string name="settings_port_title">เซิร์ฟเวอร์พอร์ต</string>
<string name="settings_port_summary">พอร์ต TCP เซิร์ฟเวอร์ติดตาม</string>
<string name="settings_interval_title">ช่วงเวลาส่งข้อมูล</string>
<string name="settings_interval_summary">ช่วงเวลาส่งข้อมูลทุกกี่วินาที</string>
<string name="settings_status_title">สถานะเซิร์ฟเวอร์</string>
<string name="settings_status_off">เริ่มต้น</string>
<string name="settings_status_on">สิ้นสุด</string>
<string name="settings_status_off_summary">เริ่มทำงาน</string>
<string name="settings_status_on_summary">หยุดทำงาน</string>
<string name="settings_secure_title">เข้ารหัส</string>
<string name="settings_secure_off">เลือก</string>
<string name="settings_secure_on">ไม่เลือก</string>
<string name="settings_secure_off_summary">ไม่เข้ารหัสข้อมูล</string>
<string name="settings_secure_on_summary">เข้ารหัสข้อมูล</string>
<string name="settings_provider_title">ตัวบอกตำแหน่ง</string>
<string name="settings_provider_summary">แหล่งของข้อมูลบอกตำแหน่ง</string>
<string name="settings_provider_gps">ใช้จาก GPS</string>
<string name="settings_provider_network">ใช้จากข้อมูลเครือข่าย</string>
<string name="settings_provider_mixed">ใช้ร่วมกันทั้งสองแบบ</string>
<string name="settings_foreground_title">ทำงานเบื้องหน้า</string>
<string name="settings_foreground_summary">เพิ่มความลำดับสำคัญการทำงาน</string>
<string name="menu_status">สถานะ</string>
<string name="menu_about">เกี่ยวกับ</string>
<string name="menu_shortcuts">เพิ่มชอร์ตคัท</string>
<string name="menu_clear">ล้างข้อมูล</string>
<string name="about_description">Real time GPS tracker for Android devices. Compatible with Traccar Server and other tracking systems.</string>
<string name="about_license">This application is free and open source, source code is licensed under Apache License Version 2.0 and available on GitHub.</string>
<string name="about_web">For more information visit\nwww.traccar.org/client</string>
<string name="status_service_create">เริ่มทำงาน</string>
<string name="status_service_destroy">เลิกการทำงาน</string>
<string name="status_send_fail">ส่งข้อมูลล้มเหลว</string>
<string name="status_location_update">ปรับปรุงตำแหน่ง</string>
<string name="status_connectivity_change">เปลี่ยนแปลงการเชื่อมต่อ</string>
<string name="hidden_app_name">ตั้งค่าอุปกรณ์</string>
<string name="hidden_alert">The app has been hidden. To open it again please dial 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Yönetim</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Başlat</string>
<string name="shortcut_stop">Traccar - Durdur</string>
<string name="settings_id_title">Cihaz Kimliği</string>
<string name="settings_address_title">Sunucu Adresi</string>
<string name="settings_address_summary">Alanadı veya IP adresi</string>
<string name="settings_port_title">Sunucu Portu</string>
<string name="settings_port_summary">İzleme Sunucusu TCP portu</string>
<string name="settings_interval_title">Sıklık</string>
<string name="settings_interval_summary">Mesaj aralığı Sn.</string>
<string name="settings_status_title">Servis Durumu</string>
<string name="settings_status_off">Başlat</string>
<string name="settings_status_on">Durdur</string>
<string name="settings_status_off_summary">Servis Durdu</string>
<string name="settings_status_on_summary">Servis Çalışıyor</string>
<string name="settings_secure_title">Şifreleme</string>
<string name="settings_secure_off">Etkinleştir</string>
<string name="settings_secure_on">Engelle</string>
<string name="settings_secure_off_summary">Şifreleme Yok</string>
<string name="settings_secure_on_summary">Şifreleme</string>
<string name="settings_provider_title">Yer sağlayıcı</string>
<string name="settings_provider_summary">Yer bilgisi kaynağı</string>
<string name="settings_provider_gps">GPS sağlayıcı</string>
<string name="settings_provider_network">Network sağlayıcı</string>
<string name="settings_provider_mixed">Karışık sağlayıcı</string>
<string name="settings_foreground_title">Önplan servisi</string>
<string name="settings_foreground_summary">Servis önceliği arttır</string>
<string name="menu_status">Durum</string>
<string name="menu_about">Hakkında</string>
<string name="menu_shortcuts">Kısayol ekle</string>
<string name="menu_clear">Temizle</string>
<string name="about_description">Android cihazlar için gerçek zamanlı takip uygulaması. Traccar sunucuları ve diğer takip sistemleriyle uyumlu.</string>
<string name="about_license">Bu uygulama ücretsiz ve acık kaynaklıdır , kaynak kodu lisansı Apache License Version 2.0 altında lisanslı ve GitHub üzerinden ulaşılabilir.</string>
<string name="about_web">Daha fazla bilgi için http:\\www.traccar.org/client adresini ziyaret edin.</string>
<string name="status_service_create">Servis oluşturuldu</string>
<string name="status_service_destroy">Servis kaldırıldı.</string>
<string name="status_send_fail">Gönderme başarısız</string>
<string name="status_location_update">Yer güncellendi</string>
<string name="status_connectivity_change">Bağlantı değişimi</string>
<string name="hidden_app_name">Cihaz Ayarları</string>
<string name="hidden_alert">Bu uygulama arkaplanda gizli olarak çalışmaktadır. Tekrar görmek için lütfen 8722227 tuşlayın. Arayın. (TRACCAR)</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Клієнт</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Старт</string>
<string name="shortcut_stop">Traccar - Стоп</string>
<string name="settings_id_title">Ідентифікатор пристрою</string>
<string name="settings_address_title">Адреса сервера</string>
<string name="settings_address_summary">Домен або ІР адреса</string>
<string name="settings_port_title">Порт сервера</string>
<string name="settings_port_summary">TCP порт сервера</string>
<string name="settings_interval_title">Частота</string>
<string name="settings_interval_summary">Інтервал повідомлень в секундах</string>
<string name="settings_status_title">Стан сервісу</string>
<string name="settings_status_off">Старт</string>
<string name="settings_status_on">Стоп</string>
<string name="settings_status_off_summary">Сервіс зупинений</string>
<string name="settings_status_on_summary">Сервіс працює</string>
<string name="settings_secure_title">Кодування</string>
<string name="settings_secure_off">Увімкнути</string>
<string name="settings_secure_on">Вимкнути</string>
<string name="settings_secure_off_summary">Кодування вимкнене</string>
<string name="settings_secure_on_summary">Кодування увімкнене</string>
<string name="settings_provider_title">Місцезнаходження провайдера</string>
<string name="settings_provider_summary">Джерело місцезнаходження</string>
<string name="settings_provider_gps">Дані GPS</string>
<string name="settings_provider_network">Дані мережі провайдера</string>
<string name="settings_provider_mixed">Змішані дані</string>
<string name="settings_foreground_title">Служба переднього плану</string>
<string name="settings_foreground_summary">Збільшення пріоритету обслуговування</string>
<string name="menu_status">Статус</string>
<string name="menu_about">Про</string>
<string name="menu_shortcuts">Додати ярлики</string>
<string name="menu_clear">Очистити</string>
<string name="about_description">GPS трекер реального часу для Android пристроїв. Сумісність з Traccar сервером і іншими системами стеження.</string>
<string name="about_license">Цей додаток є безкоштовним з відкритим кодом, код розміщений під ліцензією Apache License версії 2.0 і доступний на GitHub.</string>
<string name="about_web">Більше інформації на сайті \nwww.traccar.org/client</string>
<string name="status_service_create">Сервіс створений</string>
<string name="status_service_destroy">Сервіс знищено</string>
<string name="status_send_fail">Відправлення невдале</string>
<string name="status_location_update">Оновлення розташування</string>
<string name="status_connectivity_change">Зміна підключення</string>
<string name="hidden_app_name">Налаштування пристрою</string>
<string name="hidden_alert">Додаток було приховано. Щоб відкрити його знову наберіть 8722227 (TRACCAR).</string>
</resources>
+45
Просмотреть файл
@@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Máy khách Traccar</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Bắt đầu</string>
<string name="shortcut_stop">Traccar - Kết thúc</string>
<string name="settings_id_title">Định danh thiết bị</string>
<string name="settings_address_title">Địa chỉ máy chủ</string>
<string name="settings_address_summary">Tên miền hoặc địa chỉ IP</string>
<string name="settings_port_title">Cổng máy chủ</string>
<string name="settings_port_summary">Cổng TCP theo dõi máy chủ</string>
<string name="settings_interval_title">Tần suất</string>
<string name="settings_interval_summary">Chu kỳ tin nhắn theo đơn vị giây</string>
<string name="settings_status_title">Trạng thái dịch vụ</string>
<string name="settings_status_off">Bắt đầu</string>
<string name="settings_status_on">Kết thúc</string>
<string name="settings_status_off_summary">Dịch vụ kết thúc</string>
<string name="settings_status_on_summary">Dịch vụ đang hoạt động</string>
<string name="settings_secure_title">Mã hóa</string>
<string name="settings_secure_off">Kích hoạt</string>
<string name="settings_secure_on">Ngừng kích hoạt</string>
<string name="settings_secure_off_summary">Không mã hóa</string>
<string name="settings_secure_on_summary">Kích hoạt mã hóa</string>
<string name="settings_provider_title">Định vị</string>
<string name="settings_provider_summary">Nguồn dữ liệu vị trí</string>
<string name="settings_provider_gps">Thiết bị GPS</string>
<string name="settings_provider_network">Nhà cung cấp mạng</string>
<string name="settings_provider_mixed">Nhà cung cấp tổng hợp</string>
<string name="settings_foreground_title">Dịch vụ chạy nổi</string>
<string name="settings_foreground_summary">Tăng thứ tự ưu tiên dịch vụ</string>
<string name="menu_status">Trạng thái</string>
<string name="menu_about">About</string>
<string name="menu_shortcuts">Thêm phím tắt</string>
<string name="menu_clear">Xóa</string>
<string name="about_description">Định vị GPS thời gian thực cho thiết bị Android. Tương thích với máy chủ Traccar và các hệ thống theo dõi khác.</string>
<string name="about_license">Ứng dụng miễn phí và mã nguồn mở, mã nguồn được phát hành theo giấy phép Apache License phiên bản 2.0 trên GitHub.</string>
<string name="about_web">Thông tin chi tiết\nwww.traccar.org/client</string>
<string name="status_service_create">Dịch vụ đã được khởi tạo</string>
<string name="status_service_destroy">Dịch vụ đã được hủy</string>
<string name="status_send_fail">Gửi lỗi</string>
<string name="status_location_update">Vị trí đã được cập nhật</string>
<string name="status_connectivity_change">Kết nối thay đổi</string>
<string name="hidden_app_name">Cài đặt thiết bị</string>
<string name="hidden_alert">Ứng dụng đã được ẩn. Để mở lại xin vui lòng gọi 8722227 (TRACCAR).</string>
</resources>
Просмотреть файл
+47
Просмотреть файл
@@ -0,0 +1,47 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Traccar Client</string>
<string name="app_logo">Traccar</string>
<string name="shortcut_start">Traccar - Start</string>
<string name="shortcut_stop">Traccar - Stop</string>
<string name="shortcut_sos">Traccar - SOS</string>
<string name="settings_id_title">Device identifier</string>
<string name="settings_address_title">Server address</string>
<string name="settings_address_summary">Domain name or IP address</string>
<string name="settings_port_title">Server port</string>
<string name="settings_port_summary">Tracking server TCP port</string>
<string name="settings_interval_title">Frequency</string>
<string name="settings_interval_summary">Messages interval in seconds</string>
<string name="settings_status_title">Service status</string>
<string name="settings_status_off">Start</string>
<string name="settings_status_on">Stop</string>
<string name="settings_status_off_summary">Service stopped</string>
<string name="settings_status_on_summary">Service running</string>
<string name="settings_secure_title">Encryption</string>
<string name="settings_secure_off">Enable</string>
<string name="settings_secure_on">Disable</string>
<string name="settings_secure_off_summary">Encryption disabled</string>
<string name="settings_secure_on_summary">Encryption enabled</string>
<string name="settings_provider_title">Location provider</string>
<string name="settings_provider_summary">Source of location data</string>
<string name="settings_provider_gps">GPS provider</string>
<string name="settings_provider_network">Network provider</string>
<string name="settings_provider_mixed">Mixed provider</string>
<string name="settings_foreground_title">Foreground service</string>
<string name="settings_foreground_summary">Increase service priority</string>
<string name="menu_status">Status</string>
<string name="menu_about">About</string>
<string name="menu_shortcuts">Add shortcuts</string>
<string name="menu_clear">Clear</string>
<string name="about_description">Real time GPS tracker for Android devices. Compatible with Traccar Server and other tracking systems.</string>
<string name="about_license">This application is free and open source, source code is licensed under Apache License Version 2.0 and available on GitHub.</string>
<string name="about_web">For more information visit\nwww.traccar.org/client</string>
<string name="status_service_create">Service created</string>
<string name="status_service_destroy">Service destroyed</string>
<string name="status_send_success">Send successfully</string>
<string name="status_send_fail">Send failed</string>
<string name="status_location_update">Location update</string>
<string name="status_connectivity_change">Connectivity change</string>
<string name="hidden_app_name">Device Settings</string>
<string name="hidden_alert">The app has been hidden. To open it again please dial 8722227 (TRACCAR).</string>
</resources>
Просмотреть файл
+6
Просмотреть файл
@@ -7,4 +7,10 @@
<item>mixed</item> <item>mixed</item>
</string-array> </string-array>
<string-array name="settings_provider_names">
<item>@string/settings_provider_gps</item>
<item>@string/settings_provider_network</item>
<item>@string/settings_provider_mixed</item>
</string-array>
</resources> </resources>
+20 -17
Просмотреть файл
@@ -1,6 +1,15 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<SwitchPreference
android:defaultValue="false"
android:key="status"
android:summaryOff="@string/settings_status_off_summary"
android:summaryOn="@string/settings_status_on_summary"
android:switchTextOff="@string/settings_status_off"
android:switchTextOn="@string/settings_status_on"
android:title="@string/settings_status_title" />
<EditTextPreference <EditTextPreference
android:key="id" android:key="id"
android:title="@string/settings_id_title" /> android:title="@string/settings_id_title" />
@@ -12,14 +21,23 @@
android:title="@string/settings_address_title" /> android:title="@string/settings_address_title" />
<EditTextPreference <EditTextPreference
android:defaultValue="5005" android:defaultValue="5055"
android:key="port" android:key="port"
android:numeric="integer" android:numeric="integer"
android:summary="@string/settings_port_summary" android:summary="@string/settings_port_summary"
android:title="@string/settings_port_title" /> android:title="@string/settings_port_title" />
<SwitchPreference
android:defaultValue="false"
android:key="secure"
android:summaryOff="@string/settings_secure_off_summary"
android:summaryOn="@string/settings_secure_on_summary"
android:switchTextOff="@string/settings_secure_off"
android:switchTextOn="@string/settings_secure_on"
android:title="@string/settings_secure_title" />
<EditTextPreference <EditTextPreference
android:defaultValue="60" android:defaultValue="300"
android:key="interval" android:key="interval"
android:numeric="integer" android:numeric="integer"
android:summary="@string/settings_interval_summary" android:summary="@string/settings_interval_summary"
@@ -33,19 +51,4 @@
android:summary="@string/settings_provider_summary" android:summary="@string/settings_provider_summary"
android:title="@string/settings_provider_title" /> android:title="@string/settings_provider_title" />
<CheckBoxPreference
android:defaultValue="false"
android:key="extended"
android:summary="@string/settings_extended_summary"
android:title="@string/settings_extended_title" />
<SwitchPreference
android:defaultValue="false"
android:key="status"
android:summaryOff="@string/settings_status_off_summary"
android:summaryOn="@string/settings_status_on_summary"
android:switchTextOff="@string/settings_status_off"
android:switchTextOn="@string/settings_status_on"
android:title="@string/settings_status_title" />
</PreferenceScreen> </PreferenceScreen>
+16 -15
Просмотреть файл
@@ -1,6 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:defaultValue="false"
android:key="status"
android:summaryOff="@string/settings_status_off_summary"
android:summaryOn="@string/settings_status_on_summary"
android:title="@string/settings_status_title" />
<EditTextPreference <EditTextPreference
android:key="id" android:key="id"
android:title="@string/settings_id_title" /> android:title="@string/settings_id_title" />
@@ -12,14 +19,21 @@
android:title="@string/settings_address_title" /> android:title="@string/settings_address_title" />
<EditTextPreference <EditTextPreference
android:defaultValue="5005" android:defaultValue="5055"
android:key="port" android:key="port"
android:numeric="integer" android:numeric="integer"
android:summary="@string/settings_port_summary" android:summary="@string/settings_port_summary"
android:title="@string/settings_port_title" /> android:title="@string/settings_port_title" />
<CheckBoxPreference
android:defaultValue="false"
android:key="secure"
android:summaryOff="@string/settings_secure_off_summary"
android:summaryOn="@string/settings_secure_on_summary"
android:title="@string/settings_secure_title" />
<EditTextPreference <EditTextPreference
android:defaultValue="60" android:defaultValue="300"
android:key="interval" android:key="interval"
android:numeric="integer" android:numeric="integer"
android:summary="@string/settings_interval_summary" android:summary="@string/settings_interval_summary"
@@ -33,17 +47,4 @@
android:summary="@string/settings_provider_summary" android:summary="@string/settings_provider_summary"
android:title="@string/settings_provider_title" /> android:title="@string/settings_provider_title" />
<CheckBoxPreference
android:defaultValue="false"
android:key="extended"
android:summary="@string/settings_extended_summary"
android:title="@string/settings_extended_title" />
<CheckBoxPreference
android:defaultValue="false"
android:key="status"
android:summaryOff="@string/settings_status_off_summary"
android:summaryOn="@string/settings_status_on_summary"
android:title="@string/settings_status_title" />
</PreferenceScreen> </PreferenceScreen>
Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.3 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.0 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 4.7 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 7.5 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 11 KiB

+46
Просмотреть файл
@@ -0,0 +1,46 @@
package org.traccar.client;
import android.database.sqlite.SQLiteDatabase;
import android.location.Location;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import java.util.Date;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class DatabaseHelperTest {
@Test
public void test() throws Exception {
DatabaseHelper databaseHelper = new DatabaseHelper(RuntimeEnvironment.application);
SQLiteDatabase db = databaseHelper.getWritableDatabase();
Position position = new Position("123456789012345", new Location("gps"), 0);
position.setTime(new Date(0));
assertNull(databaseHelper.selectPosition());
databaseHelper.insertPosition(position);
position = databaseHelper.selectPosition();
assertNotNull(position);
databaseHelper.deletePosition(position.getId());
assertNull(databaseHelper.selectPosition());
}
}
+31
Просмотреть файл
@@ -0,0 +1,31 @@
package org.traccar.client;
import android.location.Location;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import java.util.Date;
import static org.junit.Assert.assertEquals;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class ProtocolFormatterTest {
@Test
public void testFormatRequest() throws Exception {
Position position = new Position("123456789012345", new Location("gps"), 0);
position.setTime(new Date(0));
String url = ProtocolFormatter.formatRequest("localhost", 5055, false, position);
assertEquals("http://localhost:5055?id=123456789012345&timestamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&batt=0.0", url);
}
}
+22
Просмотреть файл
@@ -0,0 +1,22 @@
package org.traccar.client;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static org.junit.Assert.assertTrue;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class RequestManagerTest {
@Test
public void testSendRequest() throws Exception {
assertTrue(RequestManager.sendRequest("http://www.google.com"));
}
}
+1 -1
Просмотреть файл
@@ -5,7 +5,7 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:1.2.2' classpath 'com.android.tools.build:gradle:2.2.0'
} }
} }
-18
Просмотреть файл
@@ -1,18 +0,0 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
Двоичные данные
Двоичный файл не отображается.
+1 -2
Просмотреть файл
@@ -1,6 +1,5 @@
#Fri Feb 06 09:56:43 NZDT 2015
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
-119
Просмотреть файл
@@ -1,119 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2985"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="traccar.svg">
<defs
id="defs2987" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4"
inkscape:cx="-11.637539"
inkscape:cy="7.0291785"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:object-nodes="true"
inkscape:snap-intersection-paths="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="true"
inkscape:snap-center="true"
inkscape:snap-object-midpoints="true"
inkscape:window-width="1920"
inkscape:window-height="1176"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:snap-global="false" />
<metadata
id="metadata2990">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g2995">
<path
transform="matrix(11.849785,-6.8414759,4.1048857,7.1098702,-141.6761,-453.06363)"
d="m -4.633625,61.745384 a 2.0991254,3.4985423 0 1 1 -4.1982508,0 2.0991254,3.4985423 0 1 1 4.1982508,0 z"
sodipodi:ry="3.4985423"
sodipodi:rx="2.0991254"
sodipodi:cy="61.745384"
sodipodi:cx="-6.7327504"
id="path3038"
style="fill:#ffffff"
sodipodi:type="arc" />
<path
transform="matrix(0.98000485,-0.56580602,0.76260819,1.3208761,-13.500496,-10.292296)"
d="m 16.134891,38.929852 a 1.9927555,1.478496 0 1 1 -3.985511,0 1.9927555,1.478496 0 1 1 3.985511,0 z"
sodipodi:ry="1.478496"
sodipodi:rx="1.9927555"
sodipodi:cy="38.929852"
sodipodi:cx="14.142136"
id="path2993"
style="fill:#000000"
sodipodi:type="arc" />
<path
id="path3004"
d="m 36.965211,24.251054 -2.816072,3.57877 c 0.657208,0.517134 1.313001,1.146671 1.756681,1.915146 0.443679,0.768474 0.660975,1.651177 0.780224,2.478901 l 4.507342,-0.649405 C 41.001257,30.166972 40.565802,28.79619 39.81164,27.489944 39.057477,26.183697 38.088074,25.121191 36.965211,24.251054 z"
style="fill:#000000"
inkscape:connector-curvature="0" />
<path
id="path3014"
d="m 42.404828,17.041928 -2.816072,3.578769 c 1.591875,1.223919 3.062315,2.767181 4.128704,4.614221 1.066388,1.847038 1.667671,3.892108 1.931679,5.882671 l 4.507341,-0.649405 c -0.336471,-2.571017 -1.155959,-5.102841 -2.5332,-7.488294 -1.377241,-2.385452 -3.160122,-4.36106 -5.218452,-5.937962 z"
style="fill:#000000"
inkscape:connector-curvature="0" />
<path
sodipodi:end="4.712389"
sodipodi:start="1.5707963"
transform="matrix(3.9507144,-2.2809459,1.4097023,2.4416757,-59.699972,-127.24372)"
d="m -2.0227272,68.375862 a 1.9772727,3.1992946 0 1 1 0,-6.398589 l -1e-7,3.199294 z"
sodipodi:ry="3.1992946"
sodipodi:rx="1.9772727"
sodipodi:cy="65.176567"
sodipodi:cx="-2.0227273"
id="path3036"
style="fill:#000000"
sodipodi:type="arc" />
<path
id="path3038-8"
d="M 17.638883,7.1258129 C 3.9012503,15.057239 -0.80560983,32.62348 7.1258152,46.361111 15.057241,60.098742 32.623482,64.805603 46.361115,56.874177 60.098748,48.942752 64.805608,31.37651 56.874183,17.63888 48.942758,3.9012493 31.376516,-0.80561226 17.638883,7.1258129 z m 1.689543,2.9263741 C 31.449867,3.0538711 46.949491,7.2069826 53.947808,19.328422 60.946126,31.449863 56.793012,46.949488 44.671573,53.947803 32.550132,60.94612 17.050507,56.793009 10.05219,44.671568 3.0538724,32.550127 7.2069849,17.050503 19.328426,10.052187 z"
style="fill:#000000"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 4.8 KiB

Двоичные данные
Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 32 KiB

+1 -1
Просмотреть файл
@@ -1 +1 @@
include ':traccar-client' include ':app'
-21
Просмотреть файл
@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="traccar-client-android" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<output url="file://$MODULE_DIR$/build/classes/main" />
<output-test url="file://$MODULE_DIR$/build/classes/test" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
-1
Просмотреть файл
@@ -1 +0,0 @@
/build

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше