Commit ce162627 authored by Kirk Rader's avatar Kirk Rader

fix lingering problems with javadocs

parent e0f262ec
<html>
<head>
<title>WyFy</title>
</head>
<body>
<h1>WyFy</h1>
<p>Android app that allows a device to connect to a wi fi network
using credentials stored in a QR code or NFC tag.</p>
<h2>Features</h2>
<ul>
<li><p>Enter wi fi parameters in the UI (SSID, security
protocol, password etc.)</p></li>
<li><p>Write those parameters to a NDEF-compatible NFC tag</p></li>
<li><p>Share those parameters as QR code image</p></li>
<li><p>Connect to a wi fi network automatically by tapping a
NFC tag created by this app</p></li>
</ul>
<p>
Note that the contents of the QR code images is compatible with that
used for storing wi fi parameters by popular QR code scanning apps
like <a
href="https://play.google.com/store/apps/details?id=com.google.zxing.client.android">Barcode&nbsp;Scanner</a>,
<a href="https://play.google.com/store/apps/details?id=la.droid.qr">QR&nbsp;Droid</a>
and so on. Use any such app to scan QR codes created by this one.
</p>
<p>The contents of NFC tags created by this app are NDEF "U"
records with URI's in the identical format to that used in the QR
codes. This allows both for maximum code re-use (smaller size, fewer
bugs) and also maximizes potential inter-operability with other apps.</p>
<h2>Why this app?</h2>
<p>There are plenty of of apps in the Play store with similar
functionality and more elaborate feature sets. You might consider
using this one because:</p>
<ul>
<li><p>It is small and lightweight, focused exactly on its
intended purpose</p></li>
<li><p>It requests no permissions beyond those it actually
needs for its user-visible functionality (NFC, wi fi settings)</p></li>
<li><p>It is completely ad free, generates no
notification-bar spam or the like</p></li>
<li><p>It is open-source, offering the opportunity not only
to verify that it does not contain any malware but also to use it as
an example of how to accomplish a number of Android app programming
tasks (app life-cycle, sharing via intents and content providers,
NFC etc.)</p></li>
</ul>
<h2>Acknowledgments</h2>
<p>
This app relies on the open-source <a
href="http://code.google.com/p/zxing/">zxing</a> library for creating
QR code images. See
</p>
<blockquote>
<a href="http://code.google.com/p/zxing/">http://code.google.com/p/zxing/</a>
</blockquote>
<p>for its copyright and licensing notices, documentation, source
code etc.</p>
<p>
Other than the <a href="http://code.google.com/p/zxing/">zxing</a>
library, 100% of the source code for this app can be found in the
github repository at
</p>
<blockquote>
<a href="https://github.com/parasaurolophus/wyfy.git">https://github.com/parasaurolophus/wyfy.git</a>
</blockquote>
<p>
Both the source and executable code for this app is freely
redistributable under the terms of the <a
href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache
License 2.0</a>
</p>
<h1>WyFy</h1>
<p>Android app that allows a device to connect to a wi fi
network using credentials stored in a QR code or NFC tag.</p>
<h2>Features</h2>
<ul>
<li><p>Enter wi fi parameters in the UI (SSID, security
protocol, password etc.)</p></li>
<li><p>Write those parameters to a NDEF-compatible NFC
tag</p></li>
<li><p>Share those parameters as QR code image</p></li>
<li><p>Connect to a wi fi network automatically by
tapping a NFC tag created by this app</p></li>
</ul>
<p>
Note that the contents of the QR code images is compatible with
that used for storing wi fi parameters by popular QR code
scanning apps like <a
href="https://play.google.com/store/apps/details?id=com.google.zxing.client.android"
target="_top">Barcode&nbsp;Scanner</a>, <a
href="https://play.google.com/store/apps/details?id=la.droid.qr"
target="_top">QR&nbsp;Droid</a> and so on. Use any such app
to scan QR codes created by this one.
</p>
<p>The contents of NFC tags created by this app are NDEF "U"
records with URI's in the identical format to that used in the
QR codes. This allows both for maximum code re-use (smaller
size, fewer bugs) and also maximizes potential inter-operability
with other apps.</p>
<h2>Why this app?</h2>
<p>There are plenty of of apps in the Play store with similar
functionality and more elaborate feature sets. You might
consider using this one because:</p>
<ul>
<li><p>It is small and lightweight, focused exactly on
its intended purpose</p></li>
<li><p>It requests no permissions beyond those it
actually needs for its user-visible functionality (NFC,
wi fi settings)</p></li>
<li><p>It is completely ad free, generates no
notification-bar spam or the like</p></li>
<li><p>It is open-source, offering the opportunity not
only to verify that it does not contain any malware but
also to use it as an example of how to accomplish a
number of Android app programming tasks (app life-cycle,
sharing via intents and content providers, NFC etc.)</p></li>
</ul>
<h2>Acknowledgments</h2>
<p>
This app relies on the open-source <a
href="http://code.google.com/p/zxing/" target="_top">zxing</a>
library for creating QR code images. See
</p>
<blockquote>
<a href="http://code.google.com/p/zxing/" target="_top">http://code.google.com/p/zxing/</a>
</blockquote>
<p>for its copyright and licensing notices, documentation,
source code etc.</p>
<p>
Other than the <a href="http://code.google.com/p/zxing/"
target="_top">zxing</a> library, 100% of the source code for
this app can be found in the github repository at
</p>
<blockquote>
<a href="https://github.com/parasaurolophus/wyfy.git"
target="_top">https://github.com/parasaurolophus/wyfy.git</a>
</blockquote>
<p>
Both the source and executable code for this app is freely
redistributable under the terms of the <a
href="http://www.apache.org/licenses/LICENSE-2.0.html"
target="_top">Apache License 2.0</a>
</p>
</body>
</html>
\ No newline at end of file
......@@ -15,7 +15,10 @@
*/
package us.rader.wyfy;
import android.app.Activity;
import us.rader.wyfy.db.WiFiSettingsContract;
import us.rader.wyfy.model.WifiSettings;
import us.rader.wyfy.model.WifiSettings.ConnectionOutcome;
import us.rader.wyfy.nfc.NdefReaderActivity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
......@@ -27,7 +30,6 @@ import android.nfc.NfcAdapter;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
......@@ -38,13 +40,8 @@ import android.view.MenuItem;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import us.rader.wyfy.db.WiFiSettingsContract;
import us.rader.wyfy.model.WifiSettings;
import us.rader.wyfy.model.WifiSettings.ConnectionOutcome;
import us.rader.wyfy.nfc.NdefReaderActivity;
/**
* Launcher {@link Activity} for <code>WyFy</code> app
* Launcher <code>Activity</code> for <code>WyFy</code> app
*
* @author Kirk
*/
......@@ -64,8 +61,6 @@ public final class MainActivity extends FragmentActivity implements
*
* @param params
* ignored
*
* @see android.os.AsyncTask#doInBackground(Void...)
*/
@Override
protected WifiSettings.ConnectionOutcome doInBackground(Void... params) {
......@@ -89,8 +84,6 @@ public final class MainActivity extends FragmentActivity implements
* value returned by
* {@link WifiSettings#connect(WifiManager)} in the worker
* thread
*
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(WifiSettings.ConnectionOutcome result) {
......@@ -142,8 +135,6 @@ public final class MainActivity extends FragmentActivity implements
*
* @return result of calling
* {@link WifiSettings#getActiveConnection(WifiManager)}
*
* @see android.os.AsyncTask#doInBackground(Void...)
*/
@Override
protected Boolean doInBackground(Void... params) {
......@@ -166,8 +157,6 @@ public final class MainActivity extends FragmentActivity implements
* @param result
* result of calling
* {@link WifiSettings#getActiveConnection(WifiManager)}
*
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(Boolean result) {
......@@ -195,14 +184,14 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* {@link Activity#startActivityForResult(Intent, int)} request code when
* launching {@link SavedRowsActivity}
* <code>Activity.startActivityForResult(Intent, int)</code> request code
* when launching {@link SavedRowsActivity}
*/
public static final int REQUEST_SHOWS_SAVED_DATA = 2;
/**
* {@link Activity#startActivityForResult(Intent, int)} request code when
* launching {@link WriteTagActivity}
* <code>Activity.startActivityForResult(Intent, int)</code> request code
* when launching {@link WriteTagActivity}
*/
public static final int REQUEST_WRITE_TAG = 1;
......@@ -237,7 +226,7 @@ public final class MainActivity extends FragmentActivity implements
private QrCodeFragment qrCodeFragment;
/**
* Cached singleton instance of {@link WifiManager}
* Cached singleton instance of <code>WifiManager</code>
*/
private WifiManager wifiManager;
......@@ -258,10 +247,10 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* Inflate the options {@link Menu}
* Inflate the options <code>Menu</code>
*
* @param menu
* options {@ink Menu}
* options <code>Menu</code>
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
......@@ -273,14 +262,12 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* Handle an options {@link MenuItem}
* Handle an options <code>MenuItem</code>
*
* @param item
* {@link MenuItem} to handle
* <code>MenuItem</code> to handle
*
* @return <code>true</code> if and only if event was consumed
*
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
......@@ -378,8 +365,9 @@ public final class MainActivity extends FragmentActivity implements
/**
* Prepare this instance to be displayed
*
* Initialize the wi fi wifiSettings model and attach the {@link Fragment}
* instances according to the dynamically loaded layout
* Initialize the wi fi wifiSettings model and attach the
* <code>Fragment</code> instances according to the dynamically loaded
* layout
*
* @param savedInstanceState
* saved state or <code>null</code>
......@@ -436,7 +424,7 @@ public final class MainActivity extends FragmentActivity implements
* result code
*
* @param resultData
* {@link Intent} containing result data
* <code>Intent</code> containing result data
*/
private void onLoadSavedData(int resultCode, Intent resultData) {
......@@ -491,7 +479,7 @@ public final class MainActivity extends FragmentActivity implements
/**
* Handle notification that a QR code was scanned at the user's request
* using zxing's {@link IntentIntegrator}
* using zxing's <code>IntentIntegrator</code>
*
* @param requestCode
* request code
......@@ -500,7 +488,7 @@ public final class MainActivity extends FragmentActivity implements
* result code
*
* @param resultData
* {@link Intent} representing the result from the quest
* <code>Intent</code> representing the result from the quest
*/
private void onQrCodeScanned(int requestCode, int resultCode,
Intent resultData) {
......@@ -625,7 +613,7 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* Parse the data passed in the given {@link Intent} at launch
* Parse the data passed in the given <code>Intent</code> at launch
*
* @return <code>true</code> if and only if an asynchronouse attempt to
* connect was launched
......@@ -662,13 +650,13 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* Initialize from a legacy {@link NdefMessage}
* Initialize from a legacy <code>NdefMessage</code>
*
* Provide backward compatibility for tags written with older versions of
* this app
*
* @param ndefMessage
* legacy {@link NdefMessage}
* legacy <code>NdefMessage</code>
*
* @return <code>true</code> if and only if an asynchronouse attempt to
* connect was launched
......@@ -710,10 +698,10 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* Initialize wi fi model state from the given WIFI: {@link Uri}
* Initialize wi fi model state from the given WIFI: <code>Uri</code>
*
* @param uri
* WIFI: {@link Uri}
* WIFI: <code>Uri</code>
*
* @return <code>true</code> if and only if an asynchronous attempt to
* connect was launched
......@@ -740,7 +728,7 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* Use {@link IntentIntegrator} to request that zxing scan a QR code
* Use <code>IntentIntegrator</code> to request that zxing scan a QR code
*/
private void scanQrCode() {
......@@ -752,8 +740,8 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* Initialize the UI {@link Fragment} instances according to the current
* screen layout
* Initialize the UI <code>Fragment</code> instances according to the
* current screen layout
*/
private void setFragments() {
......@@ -854,7 +842,7 @@ public final class MainActivity extends FragmentActivity implements
}
/**
* Start {@Link WriteTagActivity}
* Start {@link WriteTagActivity}
*
* @return <code>true</code>
*/
......
......@@ -21,7 +21,6 @@ import java.io.FileOutputStream;
import us.rader.wyfy.model.WifiSettings;
import us.rader.wyfy.provider.FileProvider;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
......@@ -40,15 +39,15 @@ import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.ImageView;
/**
* {link Fragment} to display the QR code representation of the current WIFI:
* URI
* <code>Fragment</code> to display the QR code representation of the current
* WIFI: URI
*
* @author Kirk
*/
public final class QrCodeFragment extends Fragment {
/**
* Create the QR image {@link Bitmap} in a worker thread and update
* Create the QR image <code>Bitmap</code> in a worker thread and update
* {@link QrCodeFragment#qrCode} in the UI thread
*
* @author Kirk
......@@ -56,15 +55,14 @@ public final class QrCodeFragment extends Fragment {
private class UpdateQrCodeTask extends AsyncTask<Void, Void, Bitmap> {
/**
* Return the {@link Bitmap} for the QR code image representing
* Return the <code>Bitmap</code> for the QR code image representing
* <code>wifiSettings[0]</code>
*
* @param params
* ignored
*
* @return {@link Bitmap} for QR code image or <code>null</code>
* @return <code>Bitmap</code> for QR code image or <code>null</code>
*
* @see android.os.AsyncTask#doInBackground(Void...)
* @see WifiSettings#getQrCode(int, int, int)
* @see #onPostExecute(Bitmap)
*/
......@@ -93,12 +91,11 @@ public final class QrCodeFragment extends Fragment {
}
/**
* Set the {@link Bitmap} for {@link QrCodeFragment#qrCode}
* Set the <code>Bitmap</code> for {@link QrCodeFragment#qrCode}
*
* @param bitmap
* the {@link Bitmap}
* the <code>Bitmap</code>
*
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
* @see #doInBackground(Void...)
*/
@Override
......@@ -130,19 +127,16 @@ public final class QrCodeFragment extends Fragment {
private ImageView qrCode;
/**
* Inflate the {@Link View}
* Inflate the <code>View</code>
*
* @param inflater
* {@link LayoutInflater}
* <code>LayoutInflater</code>
*
* @param container
* {@link ViewGroup}
* <code>ViewGroup</code>
*
* @param savedInstanceState
* saved state or <code>null</code>
*
* @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater,
* android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
......@@ -198,10 +192,6 @@ public final class QrCodeFragment extends Fragment {
/**
* Save QR code to a file and then send a sharing {@link Intent} wrapped in
* a chooser
*
* @see Intent#ACTION_SEND
* @see Intent#createChooser(Intent, CharSequence)
* @see Activity#startActivity(Intent)
*/
public void shareQrCode() {
......@@ -253,7 +243,7 @@ public final class QrCodeFragment extends Fragment {
}
/**
* Get the size of the QR code image based on the current {@link View}
* Get the size of the QR code image based on the current <code>View</code>
*
* @return the size of the image
*/
......
......@@ -356,7 +356,7 @@ public class SavedRowsFragment extends Fragment {
}
/**
* Return the data for the chosen SSID to the {@link Activity} that started
* Return the data for the chosen SSID to the <code>Activity</code> that started
* this one
*
* @param ssid
......@@ -398,7 +398,7 @@ public class SavedRowsFragment extends Fragment {
* {@link Activity#finish()}
*
* @param row
* the data to pass back to the {@link Activity} that started
* the data to pass back to the <code>Activity</code> that started
* this one
*/
private void returnRowToCaller(Map<String, String> row) {
......
......@@ -31,7 +31,7 @@ import android.view.Menu;
import android.view.MenuItem;
/**
* {@link Activity} that writes a WIFI: URI to a NDEF compatible NFC tag
* <code>Activity</code> that writes a WIFI: URI to a NDEF compatible NFC tag
*
* @author Kirk
*/
......
......@@ -314,8 +314,6 @@ public final class QueryHandler extends Handler {
*
* @throws Throwable
* if an error occurs
*
* @see java.lang.Object#finalize()
*/
@Override
protected void finalize() throws Throwable {
......
......@@ -15,6 +15,8 @@
*/
package us.rader.wyfy.db;
import us.rader.wyfy.db.WiFiSettingsContract.WifiSettingsEntry;
import us.rader.wyfy.model.WifiSettings;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
......@@ -22,11 +24,8 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import us.rader.wyfy.db.WiFiSettingsContract.WifiSettingsEntry;
import us.rader.wyfy.model.WifiSettings;
/**
* {@link SQLiteOpenHelper} for the WyFy datbase
* <code>SQLiteOpenHelper</code> for the WyFy datbase
*
* Note that the methods of this class should generally be called in worker
* threads separate from the main UI!
......@@ -92,7 +91,7 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* Delete any row(s) matching the given criteria
*
* @param db
* {@link SQLiteDatabase}
* <code>SQLiteDatabase</code>
*
* @param selection
* the selection string
......@@ -113,7 +112,7 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* Return the password stored in the database for the given SSID
*
* @param db
* {@link SQLiteDatabase}
* <code>SQLiteDatabase</code>
*
* @param ssid
* SSID
......@@ -149,9 +148,7 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* Create the database from scratch
*
* @param db
* {@link SQLiteDatabase}
*
* @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
* <code>SQLiteDatabase</code>
*/
@Override
public void onCreate(SQLiteDatabase db) {
......@@ -168,7 +165,7 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* if they ever do (i.e. due to some bug)
*
* @param db
* {@link SQLiteDatabase}
* <code>SQLiteDatabase</code>
*
* @param oldVersion
* version number of the existing database
......@@ -176,8 +173,6 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* @param newVersion
* requested version of the new database
*
* @see android.database.sqlite.SQLiteOpenHelper#onDowngrade(android.database.sqlite.SQLiteDatabase,
* int, int)
* @see #onUpgrade(SQLiteDatabase, int, int)
*/
@Override
......@@ -196,7 +191,7 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* scratch
*
* @param db
* {@link SQLiteDatabase}
* <code>SQLiteDatabase</code>
*
* @param oldVersion
* version number of the existing database
......@@ -204,8 +199,6 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* @param newVersion
* requested version of the new database
*
* @see android.database.sqlite.SQLiteOpenHelper#onDowngrade(android.database.sqlite.SQLiteDatabase,
* int, int)
* @see #onDowngrade(SQLiteDatabase, int, int)
*/
@Override
......@@ -217,16 +210,16 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
}
/**
* Return a {@link Cursor} for records matching the current
* Return a <code>Cursor</code> for records matching the current
* {@link WifiSettings} singleton's SSID
*
* This will return an empty {@link Cursor} if no matching row has yet been
* added to the database. If this ever returns a {@link Cursor} with more
* than one entry, then some data corruption has occurred due to a bug
* somewhere in the app
* This will return an empty <code>Cursor</code> if no matching row has yet
* been added to the database. If this ever returns a <code>Cursor</code>
* with more than one entry, then some data corruption has occurred due to a
* bug somewhere in the app
*
* @param db
* {@link SQLiteDatabase}
* <code>SQLiteDatabase</code>
*
* @param selection
* selection SQL parameter
......@@ -234,7 +227,7 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* @param selectionArgs
* arguments to replace '?' in <code>selection</code>
*
* @return {@link Cursor}
* @return <code>Cursor</code>
*/
public Cursor query(SQLiteDatabase db, String selection,
String... selectionArgs) {
......@@ -256,7 +249,7 @@ public final class WifiSettingsDatabaseHelper extends SQLiteOpenHelper {
* {@link WifiSettings} singleton
*
* @param db
* {@link SQLiteDatabase}
* <code>SQLiteDatabase</code>
*/
public void storeWifiSettings(SQLiteDatabase db) {
......
......@@ -16,7 +16,7 @@
/**
* The data types comprising the model for the
* <a href="https://play.google.com/store/apps/details?id=us.rader.wyfy">WyFy</>
* <a href="https://play.google.com/store/apps/details?id=us.rader.wyfy" target="_top">WyFy</a>
* Android app
*
* @see us.rader.wyfy.model.WifiSettings
......
......@@ -51,7 +51,7 @@ public abstract class NdefReaderActivity extends
/**
* {@link Intent} extras key used to return the value passed to
* {@link #onTagProcessed(NdefMessage)} to the {@link Activity} that
* {@link #onTagProcessed(NdefMessage)} to the <code>Activity</code> that
* launched this one
*/
public static final String EXTRA_RESULT = "us.rader.wyfy.nfc.result"; //$NON-NLS-1$
......
......@@ -16,7 +16,7 @@
/**
* Source code package for the
* <a href="https://play.google.com/store/apps/details?id=us.rader.wyfy">WyFy</>
* <a href="https://play.google.com/store/apps/details?id=us.rader.wyfy" target="_top">WyFy</a>
* Android app
*
* @see us.rader.wyfy.MainActivity
......
......@@ -16,7 +16,7 @@
/**
* Simple {@link android.content.ContentProvider} for the
* <a href="https://play.google.com/store/apps/details?id=us.rader.wyfy">WyFy</>
* <a href="https://play.google.com/store/apps/details?id=us.rader.wyfy" target="_top">WyFy</a>
* Android app that allows sharing files with other apps
*
* @see us.rader.wyfy.provider.FileProvider
......
javadoc -overview WyFy/src/overview.html -classpath WyFy/libs/zxing.jar;WyFy\libs\zxingIntegration.jar;WyFy\libs\android-support-v4.jar;C:\Users\a08169\Documents\android-sdk\platforms\android-17\android.jar -source 1.6 -d WyFy/doc -private -sourcepath WyFy/src/;WyFy/gen us.rader.wyfy us.rader.wyfy.db us.rader.wyfy.model us.rader.wyfy.nfc us.rader.wyfy.provider
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment