初めて質問させていただきます。よろしくお願いいたします。
高校・大学と情報系の分野を学び、現在、会社でandroid studioを用いて、撮影した画像をサーバーに格納して、物品の紛失防止の改善を行おうとしています。
調べながらやった結果、ニフクラmobile backendを利用すると導入がやりやすそうだったので、サンプルプログラムを利用して、撮影した写真をサーバーに格納するというアプリは実現できました。
しかしながら、その日使用した物品番号と、使用者名を写真のファイル名につけられないと、誰がどの物品を使用したのかが分かりません。
そのため、アプリ画面に番号と名前を入力するEditTextを配置し、あとはMainActivityを編集していくだけかと思ったのですが、調べながらやってもなかなかうまくいきません...
テキストボックスに入力された文字列を取得するには「getText」メソッドを使用するそうなのですが、知識不足で上手くプログラムが組めません。
EditTextで入力した数字・文字列を読み取り、今「test.png」に名前が固定されているファイル名を変更できるようにするプログラムの組み方を教えていただきたいです。
以下、ソースコードです。よろしくお願いします。
/MainActivity.java/ package mbaas.com.nifcloud.ncmbcameraquickstart; import 中略... public class MainActivity extends AppCompatActivity { Button b1; ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //**************** APIキーの設定とSDKの初期化 ********************** NCMB.initialize(this.getApplicationContext(),ここにキーが入る); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.button); iv = (ImageView) findViewById(R.id.imageView); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 0); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (data == null || data.getExtras() == null) { return; } else { Bitmap bp = (Bitmap) data.getExtras().get("data"); //******* NCMB file upload ******* ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(); bp.compress(Bitmap.CompressFormat.PNG, 0, byteArrayStream); byte[] dataByte = byteArrayStream.toByteArray(); //ACL 読み込み:可 , 書き込み:可 NCMBAcl acl = new NCMBAcl(); acl.setPublicReadAccess(true); acl.setPublicWriteAccess(true); //通信実施 final NCMBFile file; try { file = new NCMBFile("test.png", dataByte, acl); file.saveInBackground(new DoneCallback() { @Override public void done(NCMBException e) { String result; if (e != null) { //保存失敗 new AlertDialog.Builder(MainActivity.this) .setTitle("転送確認") .setMessage("Error:" + e.getMessage()) .setPositiveButton("OK", null) .show(); } else { //******* NCMB file download ******* NCMBFile file = null; try { file = new NCMBFile("test.png"); file.fetchInBackground(new FetchFileCallback() { @Override public void done(byte[] dataFetch, NCMBException er) { if (er != null) { //失敗処理 new AlertDialog.Builder(MainActivity.this) .setTitle("転送確認") .setMessage("Error:" + er.getMessage()) .setPositiveButton("OK", null) .show(); } else { //成功処理 new AlertDialog.Builder(MainActivity.this) .setTitle("転送確認") .setMessage("写真の転送に成功しました") .setPositiveButton("OK", null) .show(); Bitmap bMap = BitmapFactory.decodeByteArray(dataFetch, 0, dataFetch.length); iv.setImageBitmap(bMap); } } }); } catch (NCMBException e1) { e1.printStackTrace(); } } } }); } catch (NCMBException e) { e.printStackTrace(); } } } @Override protected void onDestroy() { super.onDestroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } /activity_main.xml/ 中略... <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView2" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginStart="59dp" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:layout_marginEnd="123dp" android:layout_marginRight="5dp" android:ems="10" android:inputType="number" android:text="@string/text_number" android:textSize="18sp" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView3" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginStart="108dp" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:layout_marginEnd="106dp" android:layout_marginRight="5dp" android:ems="10" android:inputType="textPersonName" android:text="@string/text_name" /> </RelativeLayout> /strings.xml/ <resources> <string name="app_name">キット写真点検</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="textView">撮影写真</string> <string name="Camera_button">撮影</string> <string name="kit_number">キット番号を入力してください</string> <string name="text_number" /> <string name="kit_name">使用者の名前を入力してください</string> <string name="text_name" /> </resources>
回答1件
あなたの回答
tips
プレビュー