kycalc in android programmieren

  • 11 Antworten
  • Letztes Antwortdatum
A

andireas99

Neues Mitglied
2
Hallo zusammen,
ich bin dabei eine vereinfachte Art von "kycalc" zu programmieren. Das heisst, wenn man beim Taschenrechner eine bestimmte Zahlenkombination eingibt, wird ein Browser aufgerufen. Dort kann man in einem Textfeld ein Stichwort eingeben und das wird mit Google-Bildersuche gesucht. Dann kann man auf ein Bild länger darauf drücken, ein kleines Menu mit "Download" erschent und es wird herunterladen. Es soll direkt in das Verzeichnis /sdcard/Android/data/com.andireas.kycalc/images/ heruntergeladen werden, welches bei der Installation erstellt wird, und nicht mit der Download-App. Dort wird auch noch eine .nomedia datei erstellt.

Was ich schon habe:
Den Rechner (Ich weiss ist noch sehr primitiv)
Code:
public class MainActivity extends Activity {
     
 public String str ="";
 Character op = 'q';
 int i,num,numtemp;
  String anzeige = "";
  String test = "2112";
    EditText showResult;
    
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        showResult = (EditText)findViewById(R.id.result_id);

    }
      public void btn1Clicked(View v){
       insert(1);
       showResult.setText(anzeige+=1);
      }
       
      public void btn2Clicked(View v){
       insert(2);
       showResult.setText(anzeige+=2);
       
      }
      public void btn3Clicked(View v){
       insert(3);
       showResult.setText(anzeige+=3);
      }
      public void btn4Clicked(View v){
       insert(4);
       showResult.setText(anzeige+=4);
      }
      public void btn5Clicked(View v){
       insert(5);
       showResult.setText(anzeige+=5);
      }
      public void btn6Clicked(View v){
       insert(6);
       showResult.setText(anzeige+=6);
      }
      public void btn7Clicked(View v){
       insert(7);
       showResult.setText(anzeige+=7);
      }
      public void btn8Clicked(View v){
       insert(8);
       showResult.setText(anzeige+=8);
      }
      public void btn9Clicked(View v){
       insert(9);
       showResult.setText(anzeige+=9);
      }
      public void btnplusClicked(View v){
       perform();
       op = '+';
       showResult.setText(anzeige+="+");
      }
       
      public void btnminusClicked(View v){
         perform();
         op = '-';
         showResult.setText(anzeige+="-");
      }
      public void btndivideClicked(View v){
       perform();
       op = '/';
       showResult.setText(anzeige+="/");
      }
      public void btnmultiClicked(View v){
       perform();
       op = '*';
       showResult.setText(anzeige+="*");
      }
      public void btnequalClicked(View v){
       calculate();
          
          if(Integer.parseInt(anzeige) == 2112);
             browser();
              
          
      }
       
      public void btnclearClicked(View v){
       reset();
      }
      private void halfreset(){
         str ="";
         op ='q';
         num = 0;
         numtemp = 0;
         anzeige="";
      }
      private void reset() {
  
          str ="";
          op ='q';
          num = 0;
          numtemp = 0;
          anzeige="";
          showResult.setText("");
      }
      private void insert(int j) {
    
          str = str+Integer.toString(j);
          num = Integer.valueOf(str).intValue();
        
     
      }
 
      private void perform() {
    
          str = "";
          numtemp = num;
      }
      private void calculate() {
    
        if(op == '+')
         num = numtemp+num;
        else if(op == '-')
         num = numtemp-num;
        else if(op == '/')
         num = numtemp/num;
        else if(op == '*')
         num = numtemp*num;
        showResult.setText(anzeige+"="+num);
        halfreset();
      }
      public void browser(){
                  
                  //browser
                    
                }
            
      }
Den Browser
Code:
public class MainActivity extends Activity {
    private WebView webView;
    private EditText urlEditText;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        urlEditText = (EditText) findViewById(R.id.urlField);
        urlEditText.setText("");
        webView = (WebView) findViewById(R.id.webView);    
        webView.setWebViewClient(new WebViewClient());
        Button openUrl = (Button) findViewById(R.id.goButton);
        openUrl.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                String url = urlEditText.getText().toString();
                if(validateUrl(url)){
                    webView.getSettings().setJavaScriptEnabled(true);
                    webView.loadUrl(url);
                }
            }
            private boolean validateUrl(String url) {
                
                if(url.startsWith("http://")){
                    
                    return true;
                    
                }
                else if(url.startsWith("www.")){
                    url = "http://"+url;
                    webView.getSettings().setJavaScriptEnabled(true);
                    webView.loadUrl(url);
                    return false;
                }
                else{
                    url = "http://www.google.ch/search?q="+url;
                    
                    webView.getSettings().setJavaScriptEnabled(true);
                    webView.loadUrl(url);
                    return false;
                }
                
            }
        });    
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
1. Problem: Ich habe Rechner und Browser in verschiedenen Projekten. Soll ich einfach mit dem Rechner den Browser aufrufen? Fände es aber besser wenn alles in einer apk ist.
2. Problem: Die Bilder die ich downloaden will markieren.
3. Problem: Die Bilder direkt in mein Verzeichnis downloaden.

Ich hoffe das ist machbar :(
 
Also zumindest Frage 1 kann ich beantworten:
Das sollte definitiv in die gleiche APK das ganze ist ja eine App.
Vorallem wenn du auf den gleichen Ordner zugreifen willst muss das sogar so sein
(wobei wenn beide Apps mit dem gleichen key signiert sind gehts glaube ich auch so).

Bei den anderen beiden Fragen hab ich leider keine Antwort.
 
  • Danke
Reaktionen: andireas99
Danke. Ich dachte schon niemand sieht meine Frage. :tongue:
Was ist besser: alles in einer Datei oder 2 dateien und die zweite aufrufen?
Ich tendiere zum 2. Also die 2. Datei aufrufen. Ähmm wie geht das?:blushing::confused2:
 
was meinst du mit 2. Datei aufrufen?
Von welchem Dateien redest du?
 
Ich habe bis jetzt 2 APKs gehabt. Jetzt möchte ich aber beide in einem haben. Wie fange ich dies am besten an?
Da braucht es ja 2 verschiedene activity_main und Klassen...
Also nochmals:
1. Ich tippe in der Taschenrechnerklasse das Passwort ein.
2. Es soll ein neues Fenster geöffnet werden, in dem die Browserklasse angezeigt wird.
 
Zuletzt bearbeitet:
na einfach eine der Klasse bzw Layouts umbenennen und und dann mit einem intent die den browser starten.

Das gehört aber zu den aller ersten Grundlagen in Java bzw Android.
 
Von Problem 2 und 3 weiss niemad eine Lösung?

PS: Bei der 1. Frage hatte ich einfach ein Brett vor dem Kopf. Ist eigentlich sooo einfach.:blushing:
 
Zuletzt bearbeitet:
Also habs aufgegeben. Hab herausgefunden, dass ich einen Server bräuchte der den Html Code von Google Bildersuche parst und dann Javascript hinzufügt...
Eine Stufe zu hoch für mich:tongue:
 
Naja du könntest auch selbst das HTML das dir von Google zurück geschickt wird verarbeiten und nur die entsprechenden URLs der Bilder raussuchen.
Diese dann nicht im Browser sondern mit Images anzeigen.
Mit denen kannste dann machen was du willst.
 
  • Danke
Reaktionen: andireas99
Das wäre dann dieses "parsen". Ich habe noch nie mit dem zu tun gehabt...
1) Wie "nehme" ich den quellcode?
2) soll ich ich dann einfach mit
Code:
quellcode.contains("\"http://")
irgendwie den Inhalt Zwischen den beiden "" herausnehmen?

Oder gibt es da noch einen Haken?
 
Ehrlich gesagt müsste ich mir dazu angucken, was die Google bildersuche genau ausspuckt.
Aber du solltest dir mal SAX oder JDOM angucken.
Regular expression gehen natürlich auch, sind aber (finde ich) relativ kompliziert.

Aber du brauchst dazu keinen Server dazwischen.
Das kannst du auch alles auf dem Gerät machen.
 
  • Danke
Reaktionen: andireas99
Wenn ich das richtig gesehen habe sind alle Bilder in der 2. untersten Zeile eigebunden...
 

Ähnliche Themen

M
Antworten
21
Aufrufe
1.361
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
967
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
1.006
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
790
mkuz24
M
A
Antworten
5
Aufrufe
695
swa00
swa00
Zurück
Oben Unten