|
how does camscanner works... whate are the algorthems
|
|
|
|
|
You'd have to ask the developer, rather than a random bunch of strangers who have nothing to do with the app.
But unless it's open-source, they're unlikely to tell you how their proprietary app works.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I would be very glad to partner with people to make a app game with many futures. The main point in the game is capitalisation and overpowering with real life mafia design.
|
|
|
|
|
I have an idea for an app but I'm very confused and don't know where to start I want to program an application to search for contacts by name or phone number use java or kotlin or flutter
The mechanism of its work is when the user installs the application, the contacts are pulled from the phone and then uploaded to an external database. This process is done for all users so that when one of the users tries to search by phone number, it displays all to him from the database the names that are registered in all other users’ phones I ask fellow engineers to help me from where to start and how to program it Thank you from the bottom of my heart
|
|
|
|
|
Start by writing down on paper a precise specification of what you want your app to do.
Then research the available languages and frameworks, and pick one that will do what you want.
Learn that language and framework. Write the code for your app. Test and debug until it works.
Then, based on the description of your app, hire the best lawyer you can afford. If it ever gets into an app store, you'll end up being sued for massively breaching your users' - and their contacts' - privacy.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Salim Alghiathy wrote: The mechanism of its work is when the user installs the application, the contacts are pulled from the phone and then uploaded to an external database. That doesn't sound safe/legit at all. Taken at face value, it's just pilfering users' contact database without their knowledge.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
The phone already a contacts database, and your app, as useless as it now is, will need the users permission to get at that database. So your essentially bypassing the security of your contacts database.
Now, try to understand this from the users point of view. "You want to upload all of my contacts to some central database? FOR WHAT NOW?" "F*** that!" Why on earth would anyone want to search the contacts of, say, their ex-gfs phones? I assure you it's for nothing legal.
How are you going to prevent spammers from getting their hands on that data? I'm sure everyone would love to get spammed from your contact database (not!)
Your app idea is going to get you sued the first time it's used for the wrong purpose, and it's really easy to do that! You'll be paying that judgement off for the rest of your life.
Drop the idea. Nobody in their right mind would subscribe to it.
|
|
|
|
|
Errm... isn't this is how Truecaller works?
I use it.
Drop it - it's been done already.
|
|
|
|
|
I've never heard of Truecaller, and would never use it. I do NOT expose my contact list to anything or anyone out of respect for the vulnerability of that data, the contacts themselves, and the possibility of its misuse.
I would never trust any 3rd party security keeping that data safe on their systems.
|
|
|
|
|
Hello everyone
I don't really know how to code but i have this project to create a centralized messaging app to concentrate all the messages of my social networks (snapchat, telegram, wattsap...).
I have done some research on API or similar projects but didn't find things that could help me.
If you have any advice on what type of code i will have to learn, idea of similar questions on the forum or documentation it will help.
Thanks
|
|
|
|
|
el chupino wrote: I don't really know how to code Then you have a long way to go to bring such a project to completion. The default language for Android development is Java, so you should head over to Java Tutorials Learning Paths[^] and start reading.
|
|
|
|
|
I have a idea for a project a app, that I think could be a money maker, but even better I think could save lives and make lives better for many? Huge catch, it would require coding I do not know, and business cooperation but I think I have some contacts to begin. I thought about making it open source and no profit but I think if others want to be paid, I could not afford that, so I am working on making a nondisclosure aggreement, then cut percentages for the app? What interests developers, attracts talent? Is this enough? (looking at some months to mature maybe years) I am thinking I could dump into a nonprofit developer site then there is a hardware component I want to add at some point.
|
|
|
|
|
I don't think this would be a good idea to attract developers. There is a classical notion of getting paid for the work in terms of salary but yes of course you can get the one who will be really interested in your plan and would work by getting associated with your plan.
|
|
|
|
|
Well, I would agree with the basic notion of anyone getting paid for the work they are doing but yes these days people are really interested in doing charity work and also they want to get involved in the project which they like. Therefore you may ask your group or any big influencer who is ready for charity work as their CSR.
|
|
|
|
|
Hello *All,
in Visual Studio 2022 XAMARIN for Android i need Access to iSeries-DB2 V7.1 for select and update.
I try it with NuGet-Package IBM-Data.DB2.Core (3.1.0.500).
string sqlconn = "Datasource=AS400; default collection=LIBR; Pooling=false";
iDB2Connection sqlConnection = new iDB2Connection(sqlconn);
At runtime i get the error:
System.TypeInitializationException: 'The type initializer for 'Microsoft.Win32.Registry' threw an exception.'
Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Warnung Konflikt zwischen der Prozessorarchitektur des Projekts "MSIL", das erstellt wird, und der Prozessorarchitektur des Verweises, "C:\Users\user\.nuget\packages\ibm.data.db2.core\3.1.0.500\lib\netstandard2.1\IBM.Data.DB2.Core.dll", "AMD64". Dieser Konflikt kann zu Laufzeitfehlern führen. Ändern Sie ggf. mithilfe des Konfigurations-Managers die als Ziel angegebene Prozessorarchitektur Ihres Projekts so, dass die Prozessorarchitekturen zwischen Ihrem Projekt und den Verweisen ausgerichtet werden, oder wählen Sie eine Abhängigkeit von Verweisen mit einer Prozessorarchitektur, die der als Ziel angegebene Prozessorarchitektur Ihres Projekts entspricht. XMARIN.Android
best Regards
|
|
|
|
|
Hi,
i need a little help.
I'm creating my custom Drawing View.
The functionality I am trying to achieve is:
Arrow icon => touch one point and drag until other point draws line-arrow
Text icon => touch in one point of screen and enter a text (open keyboard and write and close it)
Eraser icon => erase canvas drawn
These is the design of the menu I've made:
TOOLS MENU
And all interface is here:
INTERFACE
How can I edit my custom drawing view for make tools specified above? Whick portion of code will I put inside CustomDrawingView class?
Here my DrawingView class:
public class DrawingView extends View
{
private Path mDrawPath;
private Paint mBackgroundPaint;
private Paint mDrawPaint;
private Canvas mDrawCanvas;
private Bitmap mCanvasBitmap;
private ArrayList<Path> mPaths = new ArrayList<>();
private ArrayList<Paint> mPaints = new ArrayList<>();
private ArrayList<Path> mUndonePaths = new ArrayList<>();
private ArrayList<Paint> mUndonePaints = new ArrayList<>();
private int mBackgroundColor = 0x00FFFFFF;
private int mPaintColor = 0x00660000;
private int mStrokeWidth = 10;
public DrawingView(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
private void init()
{
mDrawPath = new Path();
mBackgroundPaint = new Paint();
initPaint();
}
private void initPaint()
{
mDrawPaint = new Paint();
mDrawPaint.setColor(mPaintColor);
mDrawPaint.setAntiAlias(true);
mDrawPaint.setStrokeWidth(mStrokeWidth);
mDrawPaint.setStyle(Paint.Style.STROKE);
mDrawPaint.setStrokeJoin(Paint.Join.ROUND);
mDrawPaint.setStrokeCap(Paint.Cap.ROUND);
}
private void drawBackground(Canvas canvas)
{
mBackgroundPaint.setColor(Color.TRANSPARENT);
mBackgroundPaint.setAntiAlias(true);
mBackgroundPaint.setAlpha(0);
canvas.drawRect(0, 0, this.getWidth(), this.getHeight(), mBackgroundPaint);
}
private void drawPaths(Canvas canvas)
{
int i = 0;
for (Path p : mPaths)
{
canvas.drawPath(p, mPaints.get(i));
i++;
}
}
@Override
protected void onDraw(Canvas canvas)
{
drawBackground(canvas);
drawPaths(canvas);
canvas.drawPath(mDrawPath, mDrawPaint);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
super.onSizeChanged(w, h, oldw, oldh);
mCanvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mDrawCanvas = new Canvas(mCanvasBitmap);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
float touchX = event.getX();
float touchY = event.getY();
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
Log.d("Debug", "TOUCH EVENT: ACTION_DOWN");
mDrawPath.moveTo(touchX, touchY);
break;
case MotionEvent.ACTION_MOVE:
Log.d("Debug", "TOUCH EVENT: ACTION_DOWN");
mDrawPath.lineTo(touchX, touchY);
break;
case MotionEvent.ACTION_UP:
Log.d("Debug", "TOUCH EVENT: ACTION_DOWN");
mDrawPath.lineTo(touchX, touchY);
mPaths.add(mDrawPath);
mPaints.add(mDrawPaint);
mDrawPath = new Path();
initPaint();
break;
default:
return false;
}
invalidate();
return true;
}
public void clearCanvas()
{
mPaths.clear();
mPaints.clear();
mUndonePaths.clear();
mUndonePaints.clear();
mDrawCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
invalidate();
}
public void startEraser()
{
Log.d("Drawingview", "StartEraser");
mDrawPaint.setXfermode(null);
mDrawPaint.setAlpha(0xFF);
mDrawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
}
public void setPaintColor(int color)
{
mPaintColor = color;
mDrawPaint.setColor(mPaintColor);
}
public void setPaintStrokeWidth(int strokeWidth)
{
mStrokeWidth = strokeWidth;
mDrawPaint.setStrokeWidth(mStrokeWidth);
}
public void setBackgroundColor(int color)
{
mBackgroundColor = color;
mBackgroundPaint.setColor(mBackgroundColor);
invalidate();
}
public Bitmap getBitmap()
{
drawBackground(mDrawCanvas);
drawPaths(mDrawCanvas);
return mCanvasBitmap;
}
public void undo()
{
if (mPaths.size() > 0)
{
mUndonePaths.add(mPaths.remove(mPaths.size() - 1));
mUndonePaints.add(mPaints.remove(mPaints.size() - 1));
invalidate();
}
}
public void redo()
{
if (mUndonePaths.size() > 0)
{
mPaths.add(mUndonePaths.remove(mUndonePaths.size() - 1));
mPaints.add(mUndonePaints.remove(mUndonePaints.size() - 1));
invalidate();
}
}
}
And this is my interface (as see in picture) class:
<pre>public class Board1 extends AppCompatActivity {
private TextView titolo;
private DrawingView areaDisegno;
private ImageView testo, freccia, sceltaColore, sceltaSpessore, undo, redo;
private Bitmap drawable;
private boolean isEnabledManoLibera = true;
private boolean isEnabledLinea = false;
private boolean isEnabledArrow = false;
public ImageButton menuButton;
private int mCurrentBackgroundColor;
private int mCurrentColor;
private int mCurrentStroke;
private static final int MAX_STROKE_WIDTH = 50;
@Override
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.black));
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_board1);
menuButton = findViewById(R.id.menu_button);
menuButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu( Board1.this, menuButton);
popup.getMenuInflater()
.inflate(R.menu.menu, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getTitle().toString())
{
case "Match Up":
CaricaMainActivity("TabellaMatchUp");
break;
case "Match Board":
CaricaMainActivity("SceltaBoards");
break;
case "Match Book":
CaricaMainActivity("InfoBook");
break;
}
return true;
}
});
popup.show();
}
});
titolo = findViewById(R.id.titolo);
titolo.setText("MATCHUP BOARD 1");
areaDisegno = findViewById(R.id.area_disegno);
testo = findViewById(R.id.testo);
freccia = findViewById(R.id.freccia);
sceltaColore= findViewById(R.id.scelta_colore);
sceltaSpessore = findViewById(R.id.scelta_spessore);
undo = findViewById(R.id.undo);
redo = findViewById(R.id.redo);
testo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isEnabledArrow = false;
isEnabledLinea = false;
isEnabledManoLibera = false;
}
});
freccia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isEnabledArrow = true;
isEnabledLinea = false;
isEnabledManoLibera = false;
}
});
sceltaColore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startColorPickerDialog();
}
});
sceltaSpessore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startStrokeSelectorDialog();
}
});
undo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
areaDisegno.undo();
}
});
redo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
areaDisegno.redo();;
}
});
inizializzaAreaDisegno();
}
public void CaricaMainActivity(String todo)
{
Intent mainActivity = new Intent(Board1.this, MainActivity.class);
mainActivity.putExtra("todo", todo);
startActivity(mainActivity);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
private void inizializzaAreaDisegno()
{
mCurrentColor = ContextCompat.getColor(this, android.R.color.black);
mCurrentStroke = 10;
areaDisegno.setBackgroundColor(mCurrentBackgroundColor);
areaDisegno.setPaintColor(mCurrentColor);
areaDisegno.setPaintStrokeWidth(mCurrentStroke);
}
private void startColorPickerDialog()
{
int[] colors = getResources().getIntArray(R.array.palette);
String[] nomiColori = getResources().getStringArray(R.array.palette_colori);
ColorPickerDialog dialog = ColorPickerDialog.newInstance(R.string.color_picker_default_title,
colors,
mCurrentColor,
6,
ColorPickerDialog.SIZE_SMALL);
dialog.setOnColorSelectedListener(new ColorPickerSwatch.OnColorSelectedListener()
{
@Override
public void onColorSelected(int color)
{
int position = ArrayUtils.getArrayIndex(colors, color);
mCurrentColor = color;
areaDisegno.setPaintColor(mCurrentColor);
Log.d("DEBUG","Colore Scelto: " + mCurrentColor);
sceltaColore.setBackground(getDrawableByName(nomiColori[position], getApplicationContext()));
}
});
dialog.show(getFragmentManager(), "ColorPickerDialog");
}
public static Drawable getDrawableByName(String name, Context context) {
int drawableResource = context.getResources().getIdentifier(name, "drawable", context.getPackageName());
if (drawableResource == 0) {
throw new RuntimeException("Can't find drawable with name: " + name);
}
return context.getResources().getDrawable(drawableResource);
}
private void startStrokeSelectorDialog()
{
StrokeSelectorDialog dialog = StrokeSelectorDialog.newInstance(mCurrentStroke, MAX_STROKE_WIDTH);
dialog.setOnStrokeSelectedListener(new StrokeSelectorDialog.OnStrokeSelectedListener()
{
@Override
public void onStrokeSelected(int stroke)
{
mCurrentStroke = stroke;
areaDisegno.setPaintStrokeWidth(mCurrentStroke);
}
});
dialog.show(getSupportFragmentManager(), "StrokeSelectorDialog");
}
private void startShareDialog(Uri uri)
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "");
intent.putExtra(android.content.Intent.EXTRA_TEXT, "");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(intent, "Share Image"));
}
private void requestPermissionsAndSaveBitmap()
{
if (PermissionManager.checkWriteStoragePermissions(this))
{
Uri uri = FileManager.saveBitmap(this, areaDisegno.getBitmap());
startShareDialog(uri);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode)
{
case PermissionManager.REQUEST_WRITE_STORAGE:
{
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
Uri uri = FileManager.saveBitmap(this, areaDisegno.getBitmap());
startShareDialog(uri);
} else
{
Toast.makeText(this, "The app was not allowed to write to your storage. Hence, it cannot function properly. Please consider granting it this permission", Toast.LENGTH_LONG).show();
}
}
}
}
public static Bitmap drawableToBitmap (Drawable drawable) {
Bitmap bitmap = null;
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
if(bitmapDrawable.getBitmap() != null) {
return bitmapDrawable.getBitmap();
}
}
if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
} else {
bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
}
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
} }
I've tried to add this method inside Drawing View class:
public void drawText(String testo)
{
mDrawPaint.setColor(Color.WHITE);
mDrawPaint.setTextSize(200);
mDrawCanvas.drawText(testo, 10, 25, mDrawPaint);
invalidate();
}
But when i call this method can't see add text...
Thanks for any help. Cris
|
|
|
|
|
My first suggestion would be to trim your code down to just the absolute minimum needed to reproduce the problem. Everything else is just extra noise getting in the way. People here don't mind helping at all, but they can't be expected to wade through a bunch of code that only you understand.
Have you tried using different colors for text and background? Have you tried drawing on the DrawingView canvas itself instead of the canvas that is created from within the onSizeChanged() method? Have you tried stepping through the code using the debugger?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
The usual answer.
Thanks.
Cris
|
|
|
|
|
I do wonder what your expectation is when posting such a request, from volunteers! You seem to expect someone to go through your entire program and basically mentor you to get what you want to achieve.
You don't post any error, there is no indication where the problem lies, just the entire code with a set of design requirements.
So you should not expect anything but the usual answer . This implies that you have posted such requests before, it seems you do not learn from the usual answer !
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
I'm having trouble uploading apps on Google Playstore, what should I do, thank you
|
|
|
|
|
You could start by explaining, in detail, what the trouble is.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
To Upload Apps on Google Playstore, you need to follow these steps:-
Step 1: Fill credentials in Google Play Developer Console.
Step 2: After getting your google account uploaded link it with your google wallet merchant account.
Step 3: Now Create an Application
Step 4: Using appropriate Keywords you need to create your App Listing.
Step 5: Next step is to upload APK or App Bundles to google play.
Step 6: This is a crucial step now where you need to do the content rating, if the content is unrated then you App will get removed from the play store.
Step 7: Now you need to assign the price to your App and decide whether you want to make your app free or paid.
Step 8: When everything is filled then you can publish your app.
|
|
|
|
|
|
Hello ,
I am facing issues to do search from a search-box. There are a couple of solutions in Java, but couldn't find the right solution in c#. Please help. I have tried the following code.
DdlStoreAddress.GetElement().Click();
TxtSearchShop.GetElement().Click();
TxtSearchShop.GetElement().SendKeys(stroreID);
//TxtSearchShop.GetElement().Click();
//AppiumDriverContext.Driver.PressKeyCode(AndroidKeyCode.Keycode_SEARCH);
//AppiumDriverContext.Driver.HideKeyboard();
//new Actions(AppiumDriverContext.Driver).KeyDown(OpenQA.Selenium.Keys.Enter).Perform();
//Thread.Sleep(TimeSpan.FromSeconds(1));
//new Actions(AppiumDriverContext.Driver).KeyUp(OpenQA.Selenium.Keys.Enter).Perform();
//AppiumDriverContext.Driver.Keyboard.PressKey(("{ENTER}");
//AppiumDriverContext.Driver.Keyboard.SendKeys(84);
AppiumDriverContext.Driver.PressKeyCode(84);
//System.Threading.Thread.Sleep(500);
//AppiumDriverContext.Driver.HideKeyboard();
//BtnSearchShop.GetElement().Click();
Thread.Sleep(10000);
//Thread.Sleep(2000);
//AppiumDriverContext.Driver.PressKeyCode(AndroidKeyCode.Keycode_SEARCH);
//Thread.Sleep(2000);
//AppiumDriverContext.Driver.PressKeyCode(AndroidKeyCode.KeycodeNumpad_ENTER);
//Thread.Sleep(5000);
//driver.ExecuteScript("mobile:scroll", new Dictionary<string, string=""> { { "direction", "down" } });
//BtnSearchShop.GetElement().Click();
//TxtSearchShop.GetElement().SendKeys(AndroidKeyCode.Enter);
//AppiumDriverContext.Driver.LongPressKeyCode(66);
//AppiumDriverContext.Driver.HideKeyboard();
The following is my capabilities.
caps.AddAdditionalCapability("browserstack.user", MobileBaseConfiguration.BrowserStackUser);
caps.AddAdditionalCapability("browserstack.key", MobileBaseConfiguration.BrowserStackKey);
caps.AddAdditionalCapability("app", MobileBaseConfiguration.AppUrl);
caps.AddAdditionalCapability("device", MobileBaseConfiguration.Device);
caps.AddAdditionalCapability("os_version", MobileBaseConfiguration.OSVersion);
caps.PlatformName = MobileBaseConfiguration.PlatformName.ToString();
caps.AddAdditionalCapability("project", MobileBaseConfiguration.Project);
caps.AddAdditionalCapability("build", MobileBaseConfiguration.Build);
caps.AddAdditionalCapability("name", MobileBaseConfiguration.Name);
//caps.AddAdditionalCapability("unicodeKeyboard", "true");
caps.AddAdditionalCapability("autoGrantPermissions", "true");
caps.AddAdditionalCapability("nativeWebTap", "true");
modified 3-Feb-22 4:09am.
|
|
|
|
|
You seem to have forgotten to ask a question; "not working" is nowhere near enough information for anyone to help you.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|