Я делаю простое приложение, которое использует камеру, чтобы сделать снимок, а затем преобразует изображение в base64
строка и отправляет его на мой сервер вместе с именем изображения. Я не уверен, как отправить изображение с помощью Retrofit
, концепция немного неясна для меня и не имеет смысла, так как Я новичок в разработке приложений для Java / Android.
Это то, что я до сих пор. Я посмотрел несколько уроков, но я действительно не уверен, где добавить код Retrofit и как заставить его работать. Я также включил PHP
код на моем сервере. Спасибо
MainActivity.java
public class MainActivity extends AppCompatActivity {
private ImageButton ImageButton;
private String encoded_string, image_name;
private File file;
private Uri file_uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton = (ImageButton) findViewById(R.id.camera);
ImageButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT,file_uri);
startActivityForResult(i,10);
}
});
}
private void getFileUri() {
image_name = "testing1234.jpeg";
file = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), image_name);
file_uri = Uri.fromFile(file);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 10 && resultCode == RESULT_OK) {
}
}
}
PHP
<?php
header('Content-type : bitmap; charset=utf-8');
if(isset($_POST["encoded_string"])){
$encoded_string = $_POST["encoded_string"];
$device_name = $_POST["device_name"];
/*$image_name = $device_name.'.jpg';*/
$decoded_string = base64_decode($encoded_string);
$path = 'images/'.$image_name;
$file = fopen($path, 'wb');
$is_written = fwrite($file, $decoded_string);
fclose($file);
$extracted = shell_exec("python test.py $image_name");
echo $extracted;
}
else {
echo "Failed :(";
}
?>
Задача ещё не решена.
Других решений пока нет …