Yes use callInTx if your code can throw a exception (if not you can also consider runInTx. Android's SQLite API takes care of those "nested" transactions.
After all, callInTx is just some lines of convenience if you look at the source code:
public <V> V callInTx(Callable<V> callable) throws Exception {
db.beginTransaction();
try {
V result = callable.call();
db.setTransactionSuccessful();
return result;
} finally {
db.endTransaction();
}
}