├── .factorypath
├── .gitignore
├── .settings
├── org.eclipse.core.resources.prefs
├── org.eclipse.jdt.apt.core.prefs
├── org.eclipse.jdt.core.prefs
└── org.eclipse.m2e.core.prefs
├── AndroidManifest.xml
├── LICENSE.txt
├── README.md
├── fb-android-bluetooth.iml
├── lint.xml
├── pom.xml
├── proguard.txt
├── project.properties
└── src
└── main
└── java
└── com
└── fizzbuzz
└── android
└── bluetooth
├── BluetoothDiscoveryBroadcastReceiver.java
├── BluetoothService.java
└── LoggingManager.java
/.factorypath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | bin/
2 | gen/
3 | target/
4 | tmp/
--------------------------------------------------------------------------------
/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding//src/main/java=UTF-8
3 | encoding/=UTF-8
4 | encoding/src=UTF-8
5 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.apt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.apt.aptEnabled=true
3 | org.eclipse.jdt.apt.genSrcDir=target\\generated-sources\\annotations
4 | org.eclipse.jdt.apt.reconcileEnabled=true
5 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
3 | org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
4 | org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
5 | org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
6 | org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
7 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
8 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
9 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
10 | org.eclipse.jdt.core.compiler.compliance=1.6
11 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
12 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
13 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
14 | org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
15 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
16 | org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
17 | org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
18 | org.eclipse.jdt.core.compiler.problem.deadCode=warning
19 | org.eclipse.jdt.core.compiler.problem.deprecation=warning
20 | org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
21 | org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
22 | org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
23 | org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
24 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
25 | org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
26 | org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
27 | org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
28 | org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
29 | org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
30 | org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
31 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
32 | org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
33 | org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
34 | org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
35 | org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
36 | org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
37 | org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
38 | org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
39 | org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
40 | org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
41 | org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
42 | org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
43 | org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
44 | org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
45 | org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
46 | org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
47 | org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
48 | org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
49 | org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
50 | org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
51 | org.eclipse.jdt.core.compiler.problem.nullReference=warning
52 | org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
53 | org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
54 | org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
55 | org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
56 | org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
57 | org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
58 | org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
59 | org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
60 | org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
61 | org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
62 | org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
63 | org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
64 | org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
65 | org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
66 | org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
67 | org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
68 | org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
69 | org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
70 | org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
71 | org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
72 | org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
73 | org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
74 | org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
75 | org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
76 | org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
77 | org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
78 | org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
79 | org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
80 | org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
81 | org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
82 | org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
83 | org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
84 | org.eclipse.jdt.core.compiler.problem.unusedImport=warning
85 | org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
86 | org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
87 | org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
88 | org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
89 | org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
90 | org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
91 | org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
92 | org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
93 | org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
94 | org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
95 | org.eclipse.jdt.core.compiler.processAnnotations=enabled
96 | org.eclipse.jdt.core.compiler.source=1.6
97 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | fb-android-bluetooth
2 | =================
3 |
4 | A set of helper classes for working with Bluetooth devices on Android
5 |
6 | Developed by
7 | ============
8 | Andy Dennie - andy@fizz-buzz.com
9 |
10 | License
11 | =======
12 | Copyright 2013 Fizz Buzz LLC
13 |
14 | Licensed under the Apache License, Version 2.0 (the "License");
15 | you may not use this file except in compliance with the License.
16 | You may obtain a copy of the License at
17 |
18 | http://www.apache.org/licenses/LICENSE-2.0
19 |
20 | Unless required by applicable law or agreed to in writing, software
21 | distributed under the License is distributed on an "AS IS" BASIS,
22 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23 | See the License for the specific language governing permissions and
24 | limitations under the License.
25 |
--------------------------------------------------------------------------------
/fb-android-bluetooth.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/lint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4.0.0
4 |
5 |
6 | org.sonatype.oss
7 | oss-parent
8 | 7
9 |
10 |
11 | com.fizz-buzz
12 | fb-android-bluetooth
13 | 1.0.4-SNAPSHOT
14 | jar
15 | fb-android-bluetooth
16 | A helper library for using bluetooth on Android
17 | https://github.com/fizz-buzz/fb-android-bluetooth
18 |
19 |
20 | 17
21 |
22 |
23 | 4.2.2
24 | 1.0.0
25 | 1.0.1
26 | 1.6.1-RC1
27 |
28 |
29 |
30 | http://github.com/fizz-buzz/fb-android-bluetooth/
31 | scm:git:https://github.com/fizz-buzz/fb-android-bluetooth.git
32 | scm:git:https://github.com/fizz-buzz/fb-android-bluetooth.git
33 | HEAD
34 |
35 |
36 |
37 | GitHub Issues
38 | http://github.com/fizz-buzz/fb-android-bluetooth/issues
39 |
40 |
41 |
42 |
43 | Apache 2.0
44 | http://www.apache.org/licenses/LICENSE-2.0.txt
45 |
46 |
47 |
48 |
49 | Fizz Buzz LLC
50 | http://fizz-buzz.com
51 |
52 |
53 |
54 |
55 | Andy Dennie
56 | andy@fizz-buzz.com
57 | www.andydennie.com
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | com.fizz-buzz
66 | fb-android-dagger
67 | ${fb-android-dagger.version}
68 |
69 |
70 |
71 | com.squareup.dagger
72 | dagger
73 | ${dagger.version}
74 |
75 |
76 |
77 | org.slf4j
78 | slf4j-android
79 | ${slf4j-android.version}
80 |
81 |
82 |
83 |
84 | com.google.android
85 | android
86 | ${android.version}
87 | provided
88 |
89 |
90 | commons-logging
91 | commons-logging
92 |
93 |
94 |
95 |
96 |
97 |
98 | com.squareup.dagger
99 | dagger-compiler
100 | ${dagger.version}
101 | compile
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | maven-compiler-plugin
110 | 2.5
111 |
112 | 1.6
113 | 1.6
114 |
115 |
116 |
117 | com.squareup.dagger
118 | dagger-compiler
119 | ${dagger.version}
120 |
121 |
122 |
123 |
124 |
125 | com.jayway.maven.plugins.android.generation2
126 | android-maven-plugin
127 | 3.2.0
128 |
129 |
130 |
131 | ${android-target-sdk}
132 |
133 |
134 |
135 |
136 |
137 | org.apache.maven.plugins
138 | maven-surefire-plugin
139 | 2.14
140 |
141 |
142 |
143 | org.apache.maven.plugins
144 | maven-release-plugin
145 | 2.4.1
146 |
147 | @{project.version}
148 |
149 |
150 |
151 |
152 | org.apache.maven.plugins
153 | maven-enforcer-plugin
154 | 1.1.1
155 |
156 |
157 | enforce
158 |
159 |
160 |
161 |
162 |
163 |
164 | enforce
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
--------------------------------------------------------------------------------
/proguard.txt:
--------------------------------------------------------------------------------
1 | # keep classes that Dagger needs to inject...
2 | # android component classes (other than those covered by proguard-android.txt)
3 | -keep class android.content.Context { *; }
4 | -keep class com.fizzbuzz.ottoext.MainThreadBus { *; }
5 | -keep class com.fizzbuzz.ottoext.GuaranteedDeliveryBus { *; }
6 |
7 | #include standard configs for libraries used in this project
8 | -basedirectory ../../proguard_config
9 | -include proguard-admob.txt
10 | -include proguard-android.txt
11 | -include proguard-dagger.txt
12 | -include proguard-flurry.txt
13 | -include proguard-guava.txt
14 | -include proguard-java.txt
15 | -include proguard-otto.txt
--------------------------------------------------------------------------------
/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system use,
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 |
10 | android.library=true
11 | # Project target.
12 | target=android-17
13 |
--------------------------------------------------------------------------------
/src/main/java/com/fizzbuzz/android/bluetooth/BluetoothDiscoveryBroadcastReceiver.java:
--------------------------------------------------------------------------------
1 | package com.fizzbuzz.android.bluetooth;
2 |
3 | import android.bluetooth.BluetoothAdapter;
4 | import android.bluetooth.BluetoothDevice;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.content.IntentFilter;
8 | import com.fizzbuzz.android.dagger.InjectingBroadcastReceiver;
9 |
10 | import java.util.HashSet;
11 | import java.util.Set;
12 |
13 | /**
14 | * A BroadcastReceiver which can be used to listen for and process bluetooth discovery intents
15 | */
16 | public class BluetoothDiscoveryBroadcastReceiver extends InjectingBroadcastReceiver {
17 |
18 |
19 | private Set mDiscoveredUnpairedDevices = new HashSet();
20 |
21 | public BluetoothDiscoveryBroadcastReceiver() {
22 | }
23 |
24 | public void register(final Context context) {
25 | // Register for broadcasts when a device is discovered
26 | IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
27 | context.registerReceiver(this, filter);
28 |
29 | // Register for broadcasts when discovery has finished
30 | filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
31 | context.registerReceiver(this, filter);
32 |
33 | }
34 |
35 | public void unregister(final Context context) {
36 | context.unregisterReceiver(this);
37 | }
38 |
39 | @Override
40 | public void onReceive(Context context, Intent intent) {
41 | String action = intent.getAction();
42 |
43 | // When a device is discovered, if it was not already paired, add it to the set
44 | if (BluetoothDevice.ACTION_FOUND.equals(action)) {
45 | BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
46 | if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
47 | mDiscoveredUnpairedDevices.add(device);
48 | }
49 | }
50 | // if discovery has finished, invoke the handler method and unregister this receiver
51 | else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
52 | onDiscoveryFinished(mDiscoveredUnpairedDevices);
53 | unregister(context);
54 | }
55 | }
56 |
57 | protected void onDiscoveryFinished(final Set discoveredUnpairedDevices) {
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/main/java/com/fizzbuzz/android/bluetooth/BluetoothService.java:
--------------------------------------------------------------------------------
1 | package com.fizzbuzz.android.bluetooth;
2 |
3 | import android.bluetooth.BluetoothAdapter;
4 | import android.bluetooth.BluetoothDevice;
5 | import android.bluetooth.BluetoothServerSocket;
6 | import android.bluetooth.BluetoothSocket;
7 | import android.content.Intent;
8 | import android.os.IBinder;
9 | import com.fizzbuzz.android.dagger.InjectingApplication;
10 | import com.fizzbuzz.android.dagger.InjectingService;
11 | import dagger.Module;
12 | import dagger.Provides;
13 | import org.slf4j.Logger;
14 | import org.slf4j.LoggerFactory;
15 |
16 | import javax.inject.Inject;
17 | import javax.inject.Singleton;
18 | import java.io.IOException;
19 | import java.io.InputStream;
20 | import java.io.OutputStream;
21 | import java.util.Arrays;
22 | import java.util.List;
23 | import java.util.UUID;
24 |
25 | /**
26 | * A base helper class for implementing bluetooth support on Android. Supports making outbound connections and
27 | * listening for inbound connections. Subclasses should provide an overriding implementation of
28 | * {@link #runWhileConnected(android.bluetooth.BluetoothSocket)}
29 | */
30 | public class BluetoothService extends InjectingService {
31 | private enum State {
32 | STATE_NONE,
33 | STATE_LISTENING,
34 | STATE_CONNECTING,
35 | STATE_CONNECTED
36 | }
37 |
38 | public static final String INTENT_ACTION_LISTEN_FOR_BLUETOOTH_CONNECTIONS = "com.fizzbuzz.android.bluetooth" +
39 | ".LISTEN_FOR_BLUETOOTH_CONNECTIONS";
40 | public static final String INTENT_ACTION_CONNECT_TO_BLUETOOTH_DEVICE = "com.fizzbuzz.android.bluetooth" +
41 | ".CONNECT_TO_BLUETOOTH_DEVICE";
42 | // https://www.bluetooth.org/en-us/specification/assigned-numbers-overview/service-discovery
43 | private static UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
44 | private final Logger mLogger = LoggerFactory.getLogger(LoggingManager.TAG);
45 | @Inject BluetoothAdapter mBtAdapter;
46 | private State mState;
47 | private ListeningThread mListeningThread;
48 | private ConnectingThread mConnectingThread;
49 | private ConnectedThread mConnectedThread;
50 |
51 | @Override
52 | public void onCreate() {
53 | super.onCreate();
54 |
55 | ((InjectingApplication) getApplicationContext()).getObjectGraph().inject(this);
56 |
57 | //TODO: call startForeground
58 | }
59 |
60 | @Override
61 | protected List