Skip to content

Commit ee55fb2

Browse files
committed
Litecoin: changing over to IntentIntegrator QR
Using external QR reader because it autofocuses better, and works on more devices.
1 parent b050c13 commit ee55fb2

File tree

7 files changed

+72
-34
lines changed

7 files changed

+72
-34
lines changed

wallet/pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@
7171
<version>2.2</version>
7272
</dependency>
7373

74+
<!-- com.google.zxing.integration -->
75+
<dependency>
76+
<groupId>com.google.zxing</groupId>
77+
<artifactId>android-integration</artifactId>
78+
<classifier>supportv4</classifier>
79+
<version>2.2</version>
80+
</dependency>
81+
7482
<!-- org.slf4j.* -->
7583
<dependency>
7684
<groupId>org.slf4j</groupId>

wallet/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,5 +234,6 @@
234234
<string name="action_open_blockexplorer">Open in Litecoin Explorer</string>
235235
<string name="time_today">today</string>
236236
<string name="address_unlabeled">(unlabeled)</string>
237+
<string name="send_coins_uri_parse_error_title">Parsing Error</string>
237238

238239
</resources>

wallet/src/de/schildbach/wallet/ui/InputParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,6 @@ protected void dialog(final Context context, @Nullable final OnClickListener dis
189189
}
190190

191191
private static final Pattern PATTERN_BITCOIN_ADDRESS = Pattern.compile("[" + new String(Base58.ALPHABET) + "]{20,40}");
192-
private static final Pattern PATTERN_PRIVATE_KEY = Pattern.compile("5[" + new String(Base58.ALPHABET) + "]{50,51}");
192+
private static final Pattern PATTERN_PRIVATE_KEY = Pattern.compile("T[" + new String(Base58.ALPHABET) + "]{50,51}");
193193
private static final Pattern PATTERN_TRANSACTION = Pattern.compile("[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$\\*\\+\\-\\.\\/\\:]{100,}");
194194
}

wallet/src/de/schildbach/wallet/ui/SendCoinsActivity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,16 @@
2626
import android.content.Intent;
2727
import android.os.Bundle;
2828

29+
import android.util.Log;
2930
import com.actionbarsherlock.app.ActionBar;
3031
import com.actionbarsherlock.view.Menu;
3132
import com.actionbarsherlock.view.MenuItem;
3233

34+
import com.google.bitcoin.uri.BitcoinURI;
35+
import com.google.bitcoin.uri.BitcoinURIParseException;
36+
import com.google.zxing.integration.android.IntentIntegrator;
37+
import com.google.zxing.integration.android.IntentResult;
38+
import de.schildbach.wallet.Constants;
3339
import de.schildbach.wallet_ltc.R;
3440

3541
/**

wallet/src/de/schildbach/wallet/ui/SendCoinsFragment.java

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
import android.widget.Toast;
3030
import com.google.bitcoin.core.InsufficientMoneyException;
3131
import com.google.bitcoin.core.VerificationException;
32+
import com.google.zxing.integration.android.IntentIntegrator;
33+
import com.google.zxing.integration.android.IntentIntegratorSupportV4;
34+
import com.google.zxing.integration.android.IntentResult;
3235
import org.litecoin.LitecoinWallet;
3336
import org.slf4j.Logger;
3437
import org.slf4j.LoggerFactory;
@@ -642,33 +645,34 @@ private void restoreInstanceState(final Bundle savedInstanceState)
642645
@Override
643646
public void onActivityResult(final int requestCode, final int resultCode, final Intent intent)
644647
{
645-
if (requestCode == REQUEST_CODE_SCAN)
648+
IntentResult scanResult = IntentIntegratorSupportV4.parseActivityResult(requestCode, resultCode, intent);
649+
650+
if (scanResult != null)
646651
{
647-
if (resultCode == Activity.RESULT_OK)
648-
{
649-
final String input = intent.getStringExtra(ScanActivity.INTENT_EXTRA_RESULT);
652+
final String input = scanResult.getContents();
653+
if(input == null) return;
654+
Log.d("Litecoin", "SCAN RESULT:" + input);
650655

651-
new StringInputParser(input)
652-
{
653-
@Override
654-
protected void bitcoinRequest(final Address address, final String addressLabel, final BigInteger amount, final String bluetoothMac)
655-
{
656-
SendCoinsActivity.start(activity, address != null ? address.toString() : null, addressLabel, amount, bluetoothMac);
657-
}
656+
new StringInputParser(input)
657+
{
658+
@Override
659+
protected void bitcoinRequest(final Address address, final String addressLabel, final BigInteger amount, final String bluetoothMac)
660+
{
661+
SendCoinsActivity.start(activity, address != null ? address.toString() : null, addressLabel, amount, bluetoothMac);
662+
}
658663

659-
@Override
660-
protected void directTransaction(final Transaction transaction)
661-
{
662-
cannotClassify(input);
663-
}
664+
@Override
665+
protected void directTransaction(final Transaction transaction)
666+
{
667+
cannotClassify(input);
668+
}
664669

665-
@Override
666-
protected void error(final int messageResId, final Object... messageArgs)
667-
{
668-
dialog(activity, null, R.string.button_scan, messageResId, messageArgs);
669-
}
670-
}.parse();
671-
}
670+
@Override
671+
protected void error(final int messageResId, final Object... messageArgs)
672+
{
673+
dialog(activity, null, R.string.button_scan, messageResId, messageArgs);
674+
}
675+
}.parse();
672676
}
673677
else if (requestCode == REQUEST_CODE_ENABLE_BLUETOOTH)
674678
{
@@ -960,7 +964,8 @@ protected void onFailure()
960964

961965
private void handleScan()
962966
{
963-
startActivityForResult(new Intent(activity, ScanActivity.class), REQUEST_CODE_SCAN);
967+
IntentIntegratorSupportV4 integrator = new IntentIntegratorSupportV4(this);
968+
integrator.initiateScan();
964969
}
965970

966971
private void handleEmpty()

wallet/src/de/schildbach/wallet/ui/SendingAddressesFragment.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import android.support.v4.content.Loader;
3636
import android.support.v4.widget.SimpleCursorAdapter;
3737
import android.support.v4.widget.SimpleCursorAdapter.ViewBinder;
38+
import android.util.Log;
3839
import android.view.View;
3940
import android.widget.ListView;
4041
import android.widget.TextView;
@@ -48,6 +49,8 @@
4849
import com.google.bitcoin.core.Transaction;
4950
import com.google.bitcoin.uri.BitcoinURI;
5051

52+
import com.google.zxing.integration.android.IntentIntegratorSupportV4;
53+
import com.google.zxing.integration.android.IntentResult;
5154
import de.schildbach.wallet.AddressBookProvider;
5255
import de.schildbach.wallet.Constants;
5356
import de.schildbach.wallet.ui.InputParser.StringInputParser;
@@ -121,9 +124,13 @@ public boolean setViewValue(final View view, final Cursor cursor, final int colu
121124
@Override
122125
public void onActivityResult(final int requestCode, final int resultCode, final Intent intent)
123126
{
124-
if (requestCode == REQUEST_CODE_SCAN && resultCode == Activity.RESULT_OK)
127+
IntentResult scanResult = IntentIntegratorSupportV4.parseActivityResult(requestCode, resultCode, intent);
128+
129+
if (scanResult != null)
125130
{
126-
final String input = intent.getStringExtra(ScanActivity.INTENT_EXTRA_RESULT);
131+
final String input = scanResult.getContents();
132+
if(input == null) return;
133+
Log.d("Litecoin", "SCAN RESULT:" + input);
127134

128135
new StringInputParser(input)
129136
{
@@ -220,8 +227,9 @@ protected void error(final int messageResId, final Object... messageArgs)
220227

221228
private void handleScan()
222229
{
223-
startActivityForResult(new Intent(activity, ScanActivity.class), REQUEST_CODE_SCAN);
224-
}
230+
IntentIntegratorSupportV4 integrator = new IntentIntegratorSupportV4(this);
231+
integrator.initiateScan();
232+
}
225233

226234
@Override
227235
public void onListItemClick(final ListView l, final View v, final int position, final long id)

wallet/src/de/schildbach/wallet/ui/WalletActivity.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import android.os.Environment;
6262
import android.preference.PreferenceManager;
6363
import android.text.format.DateUtils;
64+
import android.util.Log;
6465
import android.view.View;
6566
import android.view.ViewGroup;
6667
import android.widget.CheckBox;
@@ -75,6 +76,12 @@
7576
import com.google.bitcoin.core.Transaction;
7677
import com.google.bitcoin.core.Wallet;
7778

79+
import com.google.bitcoin.uri.BitcoinURI;
80+
import com.google.bitcoin.uri.BitcoinURIParseException;
81+
import com.google.zxing.integration.android.IntentIntegrator;
82+
import com.google.zxing.integration.android.IntentIntegratorSupportV4;
83+
import com.google.zxing.integration.android.IntentResult;
84+
import com.sun.istack.internal.NotNull;
7885
import de.schildbach.wallet.Constants;
7986
import de.schildbach.wallet.WalletApplication;
8087
import de.schildbach.wallet.ui.InputParser.BinaryInputParser;
@@ -173,14 +180,16 @@ protected void error(final int messageResId, final Object... messageArgs)
173180
@Override
174181
public void onActivityResult(final int requestCode, final int resultCode, final Intent intent)
175182
{
176-
if (requestCode == REQUEST_CODE_SCAN && resultCode == Activity.RESULT_OK)
183+
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
184+
if (scanResult != null)
177185
{
178-
final String input = intent.getStringExtra(ScanActivity.INTENT_EXTRA_RESULT);
179-
186+
final String input = scanResult.getContents();
187+
if(input == null) return;
188+
Log.d("Litecoin", "SCAN RESULT:" + input);
180189
new StringInputParser(input)
181190
{
182191
@Override
183-
protected void bitcoinRequest(final Address address, final String addressLabel, final BigInteger amount, final String bluetoothMac)
192+
protected void bitcoinRequest(@NotNull final Address address, final String addressLabel, final BigInteger amount, final String bluetoothMac)
184193
{
185194
SendCoinsActivity.start(WalletActivity.this, address != null ? address.toString() : null, addressLabel, amount, bluetoothMac);
186195
}
@@ -305,7 +314,8 @@ public void handleSendCoins()
305314

306315
public void handleScan()
307316
{
308-
startActivityForResult(new Intent(this, ScanActivity.class), REQUEST_CODE_SCAN);
317+
IntentIntegrator integrator = new IntentIntegrator(this);
318+
integrator.initiateScan();
309319
}
310320

311321
public void handleExportKeys()

0 commit comments

Comments
 (0)