Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Какие данные необходимо перенести с телефона чтобы приложение заработало на другом устройстве

привет
есть программа андройд
какие папки с данными необходимо перенести на другой телефон чтобы перенеслись все достижения в данной программе
предположим что программа не привязывается к железу.
я так понимаю надо перенести кеш и папку с данными - но вот где все это храниться ?
Ответ: Уважаемый saderty, вам исчерпывающе ответили выше, что не зная вашей задачи единственное что можно предположить это
Если оно написано нормально, то, скопировав файл xml для SharedPeferences, все настройки можно перенести.
Пожалуйста, потрудитесь взаимодействовать с отвечающими вам пользователями во избежание конфликтов не относящихся к теме обсуждения
 Комментарий модератора 
Офф заканчиваем
Вопрос: Два layout в одном java-файле

Java
1
2
setContentView(R.layout.activity_main);
setContentView(R.layout.activity_second);
Могу ли я так, в одном java-файле два активити прописать?

Или эту задачу можно решить только добавив второй java-файл?

Добавлено через 54 минуты
Т.е надо сделать так, чтобы когда загружался java-файл, он загрузил два layout-а - один спереди, а второй сзади. Первый должен перекрывать полностью второй.

Добавлено через 1 час 41 минуту
Тут я неправильно описал проблему - не два layout-а, а два активити. ))
Ответ: Vladimir93, уж лучше две активити, чем то, что ты сказал. Две разметки в одном xml, одна визибл - другая нет, бррр. Таким макаром, можно вообще всю разметку приложения в один файл залить, да менять видимость периодически, круто, ничего не скажешь.
Вопрос: Перспективы различных направлений Java

Помогите определится, есть базовые знание Java, довольно не плохие, ситуация такая, после изучения азов Java, решил углубиться в Java EE, изучал где месяца 4 сделал, научился делать шаблонные вещи( работа с базами данными, корзина покупателя, регистрация, отзывы, какая-никакая админка), но как-то не зацепило, не сильно много материала и сложность, решил попробовать андроид, благодаря множеству материалов обучения пошло легко, а больше всего понравилась разработка игр на андроид, но поскольку разработка игр на андроид в основном связанна с юнити, то если углубляться то в юнити, но юнити это уже плюсы. Вопрос такой какое из трех направлений Java сейчас наиболее перспективное, и как сейчас в странах снг с разработкой андроид игр, и если андроид какие есть движки конкуренты с юнити на языке джава ?
Ответ: Судя по тому что вы пишите что пошло легко, значит не достаточно углубились. ИМХО. А насчет java, она во всех направления перспективна. Для игр движков вагон и маленькая тележка, тот же AndEngine. Но зацикливаться на разработке игр не стоит, если для себя, то может быть, а если с расчетом на заработок, то тут либо найти хорошую компанию со стажировкой, либо молиться на стартап. Игры это очень хорошо, но проще и популярнее делать апликухи под заказ. Для разработки игр есть свои критерии, но это уже отдельная статья.
Вопрос: Не могу передать массив на сервер

Здравствуйте. Хочу попробовать передать массив на сервер. К примеру список вопросов. Но в итоге имею ошибку:
 
Цитата
E/JSON Parser(20752): Error parsing data org.json.JSONException: End of input at character 0 of 


MainActivity

Код
public class MainActivity extends Activity{
    private EditText et1, et2, et3; //отсюда берем текст
    private Button button1; // при нажатии отправляем
    private ArrayList<EditText> list; // тут храниться весь EditText
    private JSONArray array; // весь текст который был в EditText потом будет тут
    private static final String saveURL = "http://ksupulse.net63.net/list.php"; //ссылка с которой работаем(рабочая) 
    final Context context = this; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        et1 = (EditText) findViewById(R.id.editText1); //инициализация 
        et2 = (EditText) findViewById(R.id.editText2); 
        et3 = (EditText) findViewById(R.id.editText3);
        button1 = (Button) findViewById(R.id.button1);
        
        array = new JSONArray();
        list = new ArrayList<EditText>();
        
        list.add(et1); // добавляем весь EditText в ArrayList
        list.add(et2);
        list.add(et3);
        
        button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //смотрим размер и добавляем весь текст с list в JSONArray
                for(int i = 0; i < list.size(); i++) {
                    array.put(list.get(i).getText().toString());
                }
                //запускаем AsyncTask
                new SaveQuestions().execute();
            }
        });
    }
    
    private class SaveQuestions extends AsyncTask<String, Void, Void> {
        private ProgressDialog pDialog;
 
        protected void onPreExecute() {
              //код
            }
        
        @Override
        protected Void doInBackground(String... params) {
            //класс, ниже код этого класса
            JSONParser operationLink = new JSONParser();
            ArrayList<NameValuePair> save = new ArrayList<NameValuePair>();
            save.add(new BasicNameValuePair("listArrayQuestions", array.toString()));
            
            //для проверки сделал тут цикл в array хранятся значения, все выводит
            for(int s = 0; s < array.length(); s++){
                Log.e("listArrayQuestions" + array, "listArrayQuestions");
            }    
            
            try{
                 //передаем
                operationLink.makeHttpRequest(saveURL, "POST", save);
            }catch(Exception e){Log.e("Exception " + e, "excetion");}
            return null;
        }
        
        protected void onPostExecute(Void s) {
             //код
         }    
    }
}


JSONParser
Код
public class JSONParser {
 
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
 
    // constructor
    public JSONParser() {
 
    }
 
    // function get json from url
    // by making HTTP POST or GET mehtod
    public JSONObject makeHttpRequest(String url, String method,
            List<NameValuePair> params) throws JSONException {
 
        // Making HTTP request
        try {
 
            // check for request method
            if(method == "POST"){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
 
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
 
            }else if(method == "GET"){
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);
 
                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }           
 
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }
 
        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }
 
        return jObj; 
 
    }
}


list.php
Код
<?php
    header('Content-Type: application/json; charset=UTF-8'); 
    require 'db_connect.php'; 
    $db = new DB_CONNECT(); 
 
    $response = array();
    $response["qwestions"] = array();
       
    if(isset($_POST['listArrayQuestions'])) {
        $listArray = $_POST['listArrayQuestions'];
        $list = json_decode($listArray, true);
        
        foreach ($list as $name) {
            $result = mysql_query("INSERT INTO `test`(`text`) VALUES ('".$name."')") or die(mysql_error());
        }
 
        $response["success"] = 1;
        echo json_encode($response);  
    } else {
        $response["success"] = 0;
        echo json_encode($response);   
    }
?>

Ответ:
Здравствуйте. Хочу попробовать передать массив на сервер. К примеру список вопросов. Но в итоге имею ошибку:
 
Цитата
E/JSON Parser(20752): Error parsing data org.json.JSONException: End of input at character 0 of 


MainActivity

Код
public class MainActivity extends Activity{
    private EditText et1, et2, et3; //отсюда берем текст
    private Button button1; // при нажатии отправляем
    private ArrayList<EditText> list; // тут храниться весь EditText
    private JSONArray array; // весь текст который был в EditText потом будет тут
    private static final String saveURL = "http://ksupulse.net63.net/list.php"; //ссылка с которой работаем(рабочая) 
    final Context context = this; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        et1 = (EditText) findViewById(R.id.editText1); //инициализация 
        et2 = (EditText) findViewById(R.id.editText2); 
        et3 = (EditText) findViewById(R.id.editText3);
        button1 = (Button) findViewById(R.id.button1);
        
        array = new JSONArray();
        list = new ArrayList<EditText>();
        
        list.add(et1); // добавляем весь EditText в ArrayList
        list.add(et2);
        list.add(et3);
        
        button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //смотрим размер и добавляем весь текст с list в JSONArray
                for(int i = 0; i < list.size(); i++) {
                    array.put(list.get(i).getText().toString());
                }
                //запускаем AsyncTask
                new SaveQuestions().execute();
            }
        });
    }
    
    private class SaveQuestions extends AsyncTask<String, Void, Void> {
        private ProgressDialog pDialog;
 
        protected void onPreExecute() {
              //код
            }
        
        @Override
        protected Void doInBackground(String... params) {
            //класс, ниже код этого класса
            JSONParser operationLink = new JSONParser();
            ArrayList<NameValuePair> save = new ArrayList<NameValuePair>();
            save.add(new BasicNameValuePair("listArrayQuestions", array.toString()));
            
            //для проверки сделал тут цикл в array хранятся значения, все выводит
            for(int s = 0; s < array.length(); s++){
                Log.e("listArrayQuestions" + array, "listArrayQuestions");
            }    
            
            try{
                 //передаем
                operationLink.makeHttpRequest(saveURL, "POST", save);
            }catch(Exception e){Log.e("Exception " + e, "excetion");}
            return null;
        }
        
        protected void onPostExecute(Void s) {
             //код
         }    
    }
}


JSONParser
Код
public class JSONParser {
 
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
 
    // constructor
    public JSONParser() {
 
    }
 
    // function get json from url
    // by making HTTP POST or GET mehtod
    public JSONObject makeHttpRequest(String url, String method,
            List<NameValuePair> params) throws JSONException {
 
        // Making HTTP request
        try {
 
            // check for request method
            if(method == "POST"){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
 
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
 
            }else if(method == "GET"){
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);
 
                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }           
 
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }
 
        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }
 
        return jObj; 
 
    }
}


list.php
Код
<?php
    header('Content-Type: application/json; charset=UTF-8'); 
    require 'db_connect.php'; 
    $db = new DB_CONNECT(); 
 
    $response = array();
    $response["qwestions"] = array();
       
    if(isset($_POST['listArrayQuestions'])) {
        $listArray = $_POST['listArrayQuestions'];
        $list = json_decode($listArray, true);
        
        foreach ($list as $name) {
            $result = mysql_query("INSERT INTO `test`(`text`) VALUES ('".$name."')") or die(mysql_error());
        }
 
        $response["success"] = 1;
        echo json_encode($response);  
    } else {
        $response["success"] = 0;
        echo json_encode($response);   
    }
?>

Вопрос: Как добавить обводку тексту? Java (XML)

Необходимо добавить обводку текста в адроид студии. Какие параметры использовать для этого? Можно ли сделать это все в xml файле?
Ответ: можно.
делаете поле в лайауте, у лайаута выставляете padding в 1dp, и разные цвета для того и другого.
вот у себя прямо накидал по-быстрому:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:background="@color/Green"
                            android:padding="1dp"
                            >
                            
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="123123"
                                android:background="@color/Yellow"
                                />
                            
                        </LinearLayout>
Вопрос: Чем отличается Eclipse IDE for Java EE Developers от Eclipse IDE for Java Developers?

чем отличается Eclipse IDE for Java EE Developers и Eclipse IDE for Java Developers? и какую лучше качать для разработки под андроид?

Добавлено через 1 минуту
з.ы. и кстати что там еще надо вообще для разработки под андроид?
Ответ:
Сообщение от Паблито
потому что это 32 бита, я же написал - надо сказать и поставить 64 бита, как студия просит
она поставится не в папку Program Files (x86) а в Program Files
нет, потому что java насколько я понял вообще не имеет разрядности, вот посмотрите где вы тут видите для скачивания две версии x86 и x64? тут качается один инсталлер
Вопрос: Pascal from java

Добрый день.
Мне нужно по курсовой сделать калькулятор систем счисления, чтобы переводить числа, но нужно учесть что числа могут быть не только цели ай десятичные, пробовал сам что-то написать ничего толком не получилось, в интернете примеры только pascal, C# C ++, а нужно именно на java, нашел в интернете вроде норм код но он на паскале пробовал перевести на java но многое не получилось перевести, помогите доделать.
Оригинальный код на паскале:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
program test;
 
var 
   s, s1,s2 : string; // число для перевода
   base_in : integer; // Основание входной системы счисления
   base_out : integer; // Основание выходной системы счисления
function CheckDotCount(s: string): boolean; // Проверка количества точек в числе
var
  count, i : integer;
begin
  count := 0;
  for i := 1 to Length(s) do
    if (s[i] = '.') then inc(count);  
   if (count > 1) then CheckDotCount := false
   else CheckDotCount := true;
end;
 
function IntToHex(ds: byte): string;
const
 b: string = '0123456789ABCDEF';
begin
if (b[(ds shr 4) + 1] = '0') then
  Result:= b[(ds and $F) + 1]
else Result:= b[(ds shr 4) + 1] + b[(ds and $F) + 1];  
end;
 
function HexToInt(s: string): Longword;
 var
   b: Byte;
   c: Char;
 begin
   Result := 0;
   s := UpperCase(s);
   for b := 1 to Length(s) do
   begin
     Result := Result * 16;
     c := s[b];
     case c of
       '0'..'9': Inc(Result, Ord(c) - Ord('0'));
       'A'..'F': Inc(Result, Ord(c) - Ord('A') + 10);
     end;
   end;
 end;
 
function checkSS(base : integer; s : string): boolean;
var
  i: integer;
  flag : boolean;
begin
  flag := true;
  for i := 1 to Length(s) do 
  begin
    if (HexToInt(s[i]) >= base) then flag := false;
  end;
  if ((base > 16) or (base < 2)) then flag := false;
  Result := flag;
end;
 
function checkSSR (base : integer):boolean;
begin
if ((base > 16) or (base < 2)) then Result := false
else
Result := true;
end;
 
function getStringBeforeDot(s:string): string;
  //pos : integer;
begin
  if (Pos('.',s) = 0) then Result := s
  else Result := Copy(s, 1,Pos('.',s)-1);
end;
 
function getStringAfterDot(s: string):string;
begin
  if (Pos('.',s) = 0) then Result := ''
  else
    Result := copy(s,Pos('.',s)+1,Length(s));
end;
 
procedure IntConverter(s:string; base_in : integer; base_out : integer);
var
  n1,N,i,r1 : integer;
  d1 : array [0..255] of integer;
begin
  n1 := Length(s);
  N := 0;
  for i := 1 to n1 do
  begin
    N:= N*base_in+HexToInt(s[i]);
  end;
  if (N = 0) then write ('0')
  else
  begin
    r1 := 0;
    while (N <> 0) do
    begin
       d1[r1] := N mod base_out;
       N := N div base_out;
       inc(r1);
    end;
  for i:=r1-1 downto 0 do
    write(IntToHex(d1[i]));
  end;
end;
 
procedure DotConverter(s:string; base_in : integer; base_out : integer);
var
  n2 , i, k2: longint;
  Nf : double;
begin
  n2 := Length(s);
  if (n2 = 0) then
  begin
    writeln();
    exit;
  end;
  write('.');
  Nf := 0;
  for i := n2 downto 1 do
  begin
    Nf := (HexToInt(s[i]) + Nf) / base_in;
  end;
  k2 := 0;
  while ((Nf <> 0) AND (k2 < 20)) do
  begin
    inc(k2);
    write(IntToHex(Floor(Nf*base_out)));
    Nf := ((Nf*base_out));
  end;
end;
 
begin
  writeln('Введите число для перевода:');
  readln(s);
  if (CheckDotCount(s) = false) then
  begin
    writeln('Во введеном числе более 1 точки, что-то не так');
    exit;  
  end;
  writeln('Введите основание входной системы счисления:');
  readln(base_in);
  if (checkSS(base_in, s) = false) then
  begin
    writeln('Некорректная система счисления или число для этой системы счисления');
    exit;  
  end;
  writeln('Введите основание выходной системы счисления:');
  readln(base_out);
  if (checkSSR(base_out) = false) then
  begin
    writeln('Некорректная система счисления или число для этой системы счисления');
    exit;  
  end;
  s1 := getStringBeforeDot(s);
  s2 := getStringAfterDot(s);
  IntConverter(s1,base_in,base_out);
  DotConverter(s2,base_in,base_out);
  readln;
end.
Моя попытка перевести в java:

Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
package com.example.tlp.calcukator2;
 
import android.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import org.w3c.dom.Text;
 
public class MainActivity extends AppCompatActivity {
 
    String s, s1, s2,ss1,ss2; // число для перевода
    Integer base_in; // Основание входной системы счисления
    Integer base_out; // Основание выходной системы счисления
 
    Button button;
    EditText editText, editText2, editText3;
    TextView textView2;
    AlertDialog mes;
    private boolean CheckDotCount;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        button = (Button) findViewById(R.id.button);
        textView2 = (TextView) findViewById(R.id.textView2);
        editText = (EditText) findViewById(R.id.editText);
        editText2 = (EditText) findViewById(R.id.editText2);
        editText3 = (EditText) findViewById(R.id.editText3);
        mes = new AlertDialog.Builder(this).create();
    }
 
    public void button_click(View view){
        s = editText.getText().toString();
        if (CheckDotCount(s) == false) {
            mes.setTitle("Ошибка");
            mes.setMessage("Во введеном числе более 1 точки, что-то не так!");
            mes.show();
        }
 
        ss1 = editText.getText().toString();
        base_in = Integer.valueOf(ss1);
        if (checkSS(base_in, s) == false){
            mes.setTitle("Ошибка");
            mes.setMessage("Некорректная система счисления или число для этой системы счисления!");
            mes.show();
        }
 
        ss2 = editText.getText().toString();
        base_out = Integer.valueOf(ss2);
        if (checkSSR(base_out) == false) {
            mes.setTitle("Ошибка");
            mes.setMessage("Некорректная система счисления или число для этой системы счисления!");
            mes.show();
        }
 
        s1 = getStringBeforeDot(s);
        s2 = getStringAfterDot(s);
        IntConverter(s1,base_in,base_out);
        DotConverter(s2,base_in,base_out);
 
    }
 
 
 
    // Проверка количества точек в числе
    private Boolean CheckDotCount(String s){
        Integer count, i;
        count = 0;
        for ( i = 1; i< s.length();i++){
                if (s.charAt(i) == '.')  count++;
                if (count > 1)  CheckDotCount = false;
                else CheckDotCount = true;
        }
    }
 
    private String IntToHex(Byte ds){
        String b = "0123456789ABCDEF";
 
        if (b[(ds SHR 4) + 1] = "0")
        {
            Result = b[(ds && $F) + 1]
        }
        else
        Result = b[(ds shr 4) + 1] + b[(ds && $F) + 1];
    }
 
    private Long HexToInt(String s){
        Byte b;
        char c;
        Result = 0;
        s = s.toUpperCase();
        for (b = 1; b< s.length();b++){
            Result = Result * 16;
            c =s.charAt(b);
            switch ()
            case c:
                '0'..'9':Inc(Result, Ord(c) - Ord('0'));
                'A'..'F':Inc(Result, Ord(c) - Ord('A') + 10);
        }
    }
 
 
    private Boolean checkSS(Integer base, String s) {
        Integer i;
        Boolean flag;
        flag = true;
        for (i = 1; i< s.length();i++){
            if (HexToInt(s.charAt(i)) >= base)  flag=false;
        }
        if ((base > 16) | (base < 2))  flag = false;
        Result = flag;
        return s;
    }
 
    private Boolean checkSSR (Integer base){
        if ((base > 16) | (base < 2))  Result = false;
        else
        Result = true;
        return  base;
    }
 
    private String getStringBeforeDot(String s){
        //pos : integer;
        if (Pos('.',s) = 0)  Result = s
        else
            Result = Copy(s, 1,Pos('.',s)-1);
        return s;
    }
 
 
    private String getStringAfterDot(String s){
        if (Pos('.',s) = 0) then Result = ""
        else
        Result = copy(s,Pos('.',s)+1,s.length());
 
    }
 
    private void IntConverter(String s, Integer base_in, Integer base_out){
        Integer n1,N,i,r1;
        int[] d1 = new int[255];
        n1 = s.length();
        N = 0;
        for (i = 1; i<n1; i++){
            N= N*base_in+HexToInt(s.charAt(i));
        }
        if (N == 0) write ("0");
        else
        r1 = 0;
        while (N != 0) {
            d1[r1]:=N mod base_out;
            N =N div base_out;
            r1++;
        }
        for (i=r1-1; i== 0; i--){
            textView2.setText(IntToHex(d1[i]));
        }
    }
 
 
    private void DotConverter(String s, Integer base_in, Integer base_out){
        Integer n2,i,k2;
        Double Nf;
        n2 = s.length();
        if (n2 == 0) {
            writeln();
        }
        write('.');
        Nf = 0;
        for (i = n2; i==1;i--){
          Nf = (HexToInt(s.charAt(i)) + Nf) / base_in;
        }
        k2 = 0;
        while ((Nf != 0) && (k2 < 20)){
         k2++;
            textView2.setText(IntToHex(Math.floor(Nf * base_out)));
         Nf = ((Nf*base_out));
        }
 
    }
 
 
 
 
}
Ответ: Если кому-то поможет то код на C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <locale.h>
#include <malloc.h>
#include <stdlib.h>
#define z 255
 
/*Заголовки функций*/
int aton(char a);
char ntoa(int n);
int cdot(char * S);
void dot(char* S, char* S1, char* S2);
void IntTransfer(char *S1, int b1, int b2);
void DotTransfer(char *S2, int b1, int b2);
int types (int b1, char *S);
 
void main ()
{
int b1, b2;
char S[z];
char S1[z];
char S2[z];
setlocale(LC_CTYPE,"Russian");
printf("Введите число для перевода \n");
gets_s(S,z);
if (cdot(S) == -1)
{
printf("incorrect value, Closed!\n");
getchar();
exit (-1);
}
printf("Введите основание входной сс\n");
scanf_s("%d",&b1);
if (types (b1, S) == -2)
{
printf("Некорректное основание входной системы счисления или неверное число для перевода\n");
getchar();
exit (-1);
}
if (types2(b1) == -1)
{
printf("Неверное основание входной сс\n");
getchar();
exit (-1);
}
printf("Введите основание выходной сс\n");
scanf_s("%d",&b2);
if (types2(b2) == -1)
{
printf("Неверное основание выходной сс\n");
getchar();
exit (-1);
}
dot(S, S1, S2);
IntTransfer(S1, b1, b2);
DotTransfer (S2,b1,b2);
printf("\n");
}
 
int aton(char a) // преобразование символа в номер цифры (Число)
{
if ((a >= '0') && (a <= '9'))
return a - '0';
else if ((a >= 'a') && (a <= 'z'))
return a - 'a' + 10;
else
return a - 'A' + 10;
}
char ntoa(int n) // преобразование номера цифры в символ
{
if ((n >= 0) && (n <= 9))
return '0' + n;
else
return 'A' - 10 + n;
 
}
void dot(char* S, char* S1, char* S2) // Разделение введеной строки. До точки\после точки
{
const char* delim = ".";
char* cp = malloc(strlen(S)+1);
char* tmp;
if (cp == NULL)
{
printf("Ошибка при работе с памятью");
exit(-1);
}
 
tmp = strtok(S,".");
if (tmp!=NULL) strcpy(S1,tmp);
else strcpy(S1,"\0");
tmp=strtok(NULL,".");
if (tmp!=NULL) strcpy(S2,tmp);
else strcpy(S2,"\0");
free(cp);
}
void IntTransfer(char* S1, int b1, int b2)
{
int n1, N, i,r1;
int d1 [z];
n1=strlen(S1);
N=0;
for (i=0;i<n1;i++)
{
N=N*b1+aton(S1[i]);
}
if (N==0)
{
printf("0");
}
else
{
r1=0;
while (N!=0)
{
d1[r1]=N%b2;
N=N/b2;
r1++;
}
for (i=r1-1;i>=0;i--)
{
printf("%c",ntoa(d1[i]));
}
}
}
void DotTransfer (char *S2, int b1, int b2)
{
int n2 , i, k2;
int const K = 20;
long double Nf;
n2 = strlen(S2);
if (n2 == 0)
{
printf("\n");
return;
}
printf(".");
Nf = 0;
for (i = n2-1; i >= 0; i--)
{
Nf = (aton(S2[i]) + Nf) / b1;
}
k2 = 0;
while (Nf != 0 && k2 < K)
{
k2++;
printf("%c",ntoa(floor(Nf*b2)));
Nf=fmod((Nf*b2), 1);
}
}
int cdot(char * S)
{
int i, kol = 0;
for (i = 0; i < strlen(S); i++)
{
if (S[i] == '.') kol++;
}
if (kol > 1)
{
return -1;
}
}
int types (int b1, char *S)
{
int i;
for (i = 0; i < strlen(S); i++)
{
if (aton(S[i]) >= b1) return -2;
}
}
int types2 (int b)
{
if (b > 16 || b < 2) return -1;
 
}

я еще несколько переделал но не знаю правильно или
, а остальное не знаю как переделать
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
package com.example.tlp.calcukator2;
 
import android.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import org.w3c.dom.Text;
 
public class MainActivity extends AppCompatActivity {
 
    String s, s1, s2,ss1,ss2; // число для перевода
    Integer base_in; // Основание входной системы счисления
    Integer base_out; // Основание выходной системы счисления
 
    Button button;
    EditText editText, editText2, editText3;
    TextView textView2;
    AlertDialog mes;
    private boolean CheckDotCount;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        button = (Button) findViewById(R.id.button);
        textView2 = (TextView) findViewById(R.id.textView2);
        editText = (EditText) findViewById(R.id.editText);
        editText2 = (EditText) findViewById(R.id.editText2);
        editText3 = (EditText) findViewById(R.id.editText3);
        mes = new AlertDialog.Builder(this).create();
    }
 
    public void button_click(View view){
        s = editText.getText().toString();
        if (CheckDotCount(s) == false) {
            mes.setTitle("Ошибка");
            mes.setMessage("Во введеном числе более 1 точки, что-то не так!");
            mes.show();
        }
 
        ss1 = editText.getText().toString();
        base_in = Integer.valueOf(ss1);
        if (checkSS(base_in, s) == false){
            mes.setTitle("Ошибка");
            mes.setMessage("Некорректная система счисления или число для этой системы счисления!");
            mes.show();
        }
 
        ss2 = editText.getText().toString();
        base_out = Integer.valueOf(ss2);
        if (checkSSR(base_out) == false) {
            mes.setTitle("Ошибка");
            mes.setMessage("Некорректная система счисления или число для этой системы счисления!");
            mes.show();
        }
 
        s1 = getStringBeforeDot(s);
        s2 = getStringAfterDot(s);
        IntConverter(s1,base_in,base_out);
        DotConverter(s2,base_in,base_out);
 
    }
 
 
 
    // Проверка количества точек в числе
    private Boolean CheckDotCount(String s){
        Integer count, i;
        count = 0;
        for ( i = 1; i< s.length();i++){
                if (s.charAt(i) == '.')  count++;
                if (count > 1)  CheckDotCount = false;
                else CheckDotCount = true;
        }
        return CheckDotCount;
    }
 
    private String IntToHex(Byte ds){
        String b = "0123456789ABCDEF", result="";
 
        if (b[(ds >> 4) + 1] = "0")
        {
            result = b[(ds && $F) + 1];
        }
        else
        {
        result = b[(ds >> 4) + 1] + b[(ds && $F) + 1]
        }
        return result;
    }
 
    private Long HexToInt(String s){
        Byte b;
        Long Result;
        char c;
        Result = 0;
        s = s.toUpperCase();
        for (b = 1; b< s.length();b++){
            Result = Result * 16;
            c =s.charAt(b);
            switch ()
            case c:
                '0'..'9':Inc(Result, Ord(c) - Ord('0'));
                'A'..'F':Inc(Result, Ord(c) - Ord('A') + 10);
        }
    }
 
 
    private Boolean checkSS(Integer base, String s) {
        Integer i;
        Boolean flag,Result;
        flag = true;
        for (i = 1; i< s.length();i++){
            if (HexToInt(s.charAt(i)) >= base)  flag = false;
        }
        if ((base > 16) | (base < 2))  flag = false;
        Result = flag;
        return Result;
    }
 
    private Boolean checkSSR (Integer base){
        Boolean Result;
        if ((base > 16) | (base < 2))  Result = false;
        else
        Result = true;
        return  Result;
    }
 
    private String getStringBeforeDot(String s){
        String Result;
        if (Pos('.',s) = 0)  Result = s
        else
            Result = Copy(s, 1,Pos('.',s)-1);
        return Result;
    }
 
 
    private String getStringAfterDot(String s){
        String Result;
        if (Pos('.',s) = 0)  Result = "";
        else
        Result = copy(s,Pos('.',s)+1,s.length());
        return Result;
    }
 
    private void IntConverter(String s, Integer base_in, Integer base_out){
        Integer n1,N,i,r1;
        int[] d1 = new int[255];
        n1 = s.length();
        N = 0;
        for (i = 1; i<n1; i++){
            N= N*base_in+HexToInt(s.charAt(i));
        }
        if (N == 0) write ("0");
        else
        r1 = 0;
        while (N != 0) {
            d1[r1]:=N mod base_out;
            N =N div base_out;
            r1++;
        }
        for (i=r1-1; i== 0; i--){
            textView2.setText(IntToHex(d1[i]));
        }
    }
 
 
    private void DotConverter(String s, Integer base_in, Integer base_out){
        Integer n2,i,k2;
        Double Nf;
        n2 = s.length();
        if (n2 == 0) {
            writeln();
        }
        write('.');
        Nf = 0;
        for (i = n2; i==1;i--){
          Nf = (HexToInt(s.charAt(i)) + Nf) / base_in;
        }
        k2 = 0;
        while ((Nf != 0) && (k2 < 20)){
         k2++;
            textView2.setText(IntToHex(Math.floor(Nf * base_out)));
         Nf = ((Nf*base_out));
        }
 
    }
 
 
 
 
}
Вопрос: Глобальная переменная в Java

Подскажите нубу. Недавно начал изучать Java. У меня в методе onClick есть свич для обработки кнопок. Вот отрывок для одной кнопки:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
public void onClick(View v) {
        int res = 0;
        String vd = "";
        switch (v.getId()){
            case R.id.btn1:
                int zn = 1;
                res = res + zn;
                vd = vd + "1";
                viewText.setText(vd);
                break;
Как мне сделать, чтобы после выполнения свича, в строку String vd = ""; сохранялся полученный результат и при повторном выполнение свича использовался этот String vd = ""? Или что я не так понимаю?
Ответ: Можно:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public static void main(String argv[])
    {
        int val = 0;
        String s = "1234";
 
        try{
            Integer i_obj = Integer.valueOf(s);
            val=i_obj.intValue();
            System.out.println("val="+val);
            //все получилось
        }
        catch (Exception err) {
            //Сюда мы попали, потому что не получилось
            //получить целое по строке, значит в строке что-то не то
            err.printStackTrace();
        }
    }
Добавлено через 2 минуты
Можно даже в двоичной системе строку перевести в целое(десятичное).
Java(TM) 2 Platform Standard Edition 5.0
1
Integer i_obj = Integer.valueOf(s,2);//2 - это radix, система счисления
Вопрос: C++ Qt и java Android отправка SMS

Здравствуйте. Уже пол года мучаю Qt увидел в настройках компиляцию под Android и решил попробовать. Установил Linux и Qt c SDK, NDK, ANT. Все заработало . теперь хочу отправить СМС на номер из своего приложения , только вот засада, в java я ноль. хотя не страшно все понятно, си подобный же ))). Ну значит давай я искать примеры а пред этим прочитал вот это для начала собрал вот это заработало проверил на девайсе ). Зашел вот сюда и увидел следующий код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package ru.blagin.xmppsmsgate;
 
import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
 
public class XMPPSMSGateActivity extends Activity 
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage("5556",null,"Text SMS",null,null);
    }
}
все вроде просто только вот как мне это в С++ загнать
писал это :
C++ (Qt)
1
2
3
    QAndroidJniObject SmSManager=QAndroidJniObject::getStaticObjectField<jstring> ("android/telephony/SmsManager","getDefault");
    SmSManager.callObjectMethod ("sendTextMessage","(Ljava/lang/String;ZLjava/lang/String;ZZ)V","888888",false , "it's Qt", false,false);
    
Ответ: Печально, возвращаясь к SMS send нашел немного другую реализацию отправки.
Работает )), kuzulis выложил на вот этом форуме код ниже:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void Widget::on_pushButton_clicked()
{
    // get the Qt android activity
    QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
                                                                            "activity",
                                                                            "()Landroid/app/Activity;");
    if (activity.isValid()){
 
        //get the default SmsManager
        QAndroidJniObject mySmsManager = QAndroidJniObject::callStaticObjectMethod("android/telephony/SmsManager",
                                                                                   "getDefault",
                                                                                   "()Landroid/telephony/SmsManager;");
        if (!mySmsManager.isValid()) {
            qDebug() << "Something wrong with SMS manager...";
        } else {
 
            // get phone number & text from UI and convert to Java String
            QAndroidJniObject myPhoneNumber = QAndroidJniObject::fromString(ui->lineEditDestinataire->text());
            QAndroidJniObject myTextMessage = QAndroidJniObject::fromString(ui->lineEditTexte->text());
            QAndroidJniObject scAddress = NULL;
            //QAndroidJniObject sentIntent = NULL;
            //QAndroidJniObject deliveryIntent = NULL;
 
            // call the java function:
            // public void SmsManager.sendTextMessage(String destinationAddress,
            //                                        String scAddress, String text,
            //                                        PendingIntent sentIntent, PendingIntent deliveryIntent)
            // see: [url]http://developer.android.com/reference/android/telephony/SmsManager.html[/url]
 
            mySmsManager.callMethod<void>("sendTextMessage",
                                          "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V",
                                          myPhoneNumber.object<jstring>(),
                                          scAddress.object<jstring>(),
                                          myTextMessage.object<jstring>(), NULL, NULL );
        }
 
    } else {
        qDebug() << "Something wrong with Qt activity...";
    }
} 
Вопрос: Вызов java метода из native

Привет, чтот не пойму зачем у меня ошибка происходит...

Значит что хочу и что происходит.
Есть активити с TextView и кнопкой.
В TextView выводится текст из C++ функции stringFromJNI, всё выводит, всё работает.
По кнопке я вызываю метод из С++ RunMyCode в котором хочу найти java метод (helloWorld) и его вызвать.
В общем нахожу класс, метод, перед вызовом кидаю лог, лог приходит а при выхове получаю ошибку

system_process E/InputDispatcher: channel '4a9d792... .test.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

вот java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        TextView tv = (TextView) findViewById(R.id.sample_text);
        tv.setText(stringFromJNI());
    }
 
    static {
        System.loadLibrary("native-lib");
    }
   
    public native String stringFromJNI();
    public native void RunMyCode();//этот метод вызовит из натив helloWorld
 
 
    public void helloWorld(boolean b){//ЭТОТ МЕТОД ХОЧУ ВЫЗВАТЬ
        Log.d("LOG","helloWorld: " + b);//ТУТ НЕ СРАБОТАЕТ
    }
 
    public void RunCode(View v){//нажатие на кнопку, которое вызывает native код
        Log.d("LOG","вызов native по кнопке");
        RunMyCode();//native
    }
}
Вот native

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <jni.h>
#include <string>
#include <android/log.h>
 
// Android log function wrappers
static const char* kTAG = "LOG";
#define LOGI(...) \
  ((void)__android_log_print(ANDROID_LOG_INFO, kTAG, __VA_ARGS__))
#define LOGW(...) \
  ((void)__android_log_print(ANDROID_LOG_WARN, kTAG, __VA_ARGS__))
#define LOGE(...) \
((void)__android_log_print(ANDROID_LOG_ERROR, kTAG, __VA_ARGS__))
 
extern "C" {
    JNIEXPORT jstring JNICALL
    Java_ru_himik_nightscream_test_MainActivity_stringFromJNI(JNIEnv *env, jobject mainClass) {
        jstring hello = (jstring) "Это работает";
        return env->NewStringUTF((const char *) hello);
    }
 
    JNIEXPORT void JNICALL
    Java_ru_himik_nightscream_test_MainActivity_RunMyCode(JNIEnv *env, jobject mainClass) {
        jclass mainActivity = env->GetObjectClass(mainClass);
        jmethodID sendTimeID = env->GetMethodID(mainActivity, "helloWorld", "(Z)V");
        LOGI("sendTimeID: %d", sendTimeID);//выводит != 0, значит метод существует
        env->CallVoidMethod(mainActivity, sendTimeID, (jboolean) false);
    }
}
Пересмотрел пару десятков примеров, всё фигня, не робит и всё.
Да и в основном примеры старые, где надо было использовать Android.mk, сейчас гугл говорит надо CMake использовать в новых проектах, сам гугл только как месяц обновил примеры, но там куча не нужного и еще куча багов.
Ответ:
Сообщение от _Night_Scream_
я хочу спрятать вызов некоторых методов класса через native уровень
эти вызовы из native будут работать в том же потоке и фактически разницы не будет для приложения откуда я вызвал этот метод (helloWorld) из native или из java?
При переходе через границу JNI поток не меняется.
Если в методах нет работы с другим потоком, то синхронизация не нужна.