+
package net.osdn.gokigen.a01d;
import android.content.Context;
import android.content.DialogInterface;
+import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
-public class ConfirmationDialog
+public class ConfirmationDialog extends DialogFragment
{
- private final Context context;
+ private Context context = null;
+
+ public static ConfirmationDialog newInstance(Context context)
+ {
+ ConfirmationDialog instance = new ConfirmationDialog();
+ instance.prepare(context);
- public ConfirmationDialog(Context context)
+ return (instance);
+ }
+
+ private void prepare(Context context)
{
this.context = context;
}
alertDialog.show();
}
+ public void show(int iconResId, String title, String message)
+ {
+ // 表示イアログの生成
+ final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
+ alertDialog.setTitle(title);
+ alertDialog.setIcon(iconResId);
+ alertDialog.setMessage(message);
+ alertDialog.setCancelable(true);
+
+ // ボタンを設定する(実行ボタン)
+ alertDialog.setPositiveButton(context.getString(R.string.dialog_positive_execute),
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which)
+ {
+ dialog.dismiss();
+ }
+ });
+
+ // 確認ダイアログを表示する
+ alertDialog.show();
+ }
+
// コールバックインタフェース
public interface Callback
{
{
try
{
- final ConfirmationDialog dialog = new ConfirmationDialog(context);
+ final ConfirmationDialog dialog = ConfirmationDialog.newInstance(context);
dialog.show(R.string.dialog_title_confirmation,
R.string.dialog_message_restore_camera_property,
new ConfirmationDialog.Callback() {
{
// 確認ダイアログの生成と表示
- ConfirmationDialog dialog = new ConfirmationDialog(context);
+ ConfirmationDialog dialog = ConfirmationDialog.newInstance(context);
dialog.show(R.string.dialog_title_confirmation, R.string.dialog_message_power_off, this);
return (true);
}
final TextView methodName = alertView.findViewById(R.id.method_name);
final EditText parameter = alertView.findViewById(R.id.edit_parameter);
final EditText version = alertView.findViewById(R.id.edit_version);
- try
- {
+ try {
methodName.setText("");
version.setText(activity.getString(R.string.dialog_version_hint));
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item);
adapter.addAll(cameraApi.getSonyApiServiceList());
+
+ int defaultSelection;
+ for (defaultSelection = (adapter.getCount() - 1); defaultSelection >= 0; defaultSelection--)
+ {
+ String item = adapter.getItem(defaultSelection);
+ if ((item != null) && (item.equals("camera")))
+ {
+ break;
+ }
+ }
+ if ((defaultSelection < 0) || (defaultSelection >= adapter.getCount()))
+ {
+ defaultSelection = 0;
+ }
spinner.setAdapter(adapter);
+ spinner.setSelection(defaultSelection);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
package net.osdn.gokigen.a01d.camera.sony.cameraproperty;
import android.app.Activity;
+import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.ListFragment;
import android.support.v7.app.ActionBar;
+import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.widget.ListView;
import android.widget.Toast;
+import net.osdn.gokigen.a01d.ConfirmationDialog;
import net.osdn.gokigen.a01d.R;
import net.osdn.gokigen.a01d.camera.IInterfaceProvider;
+import org.json.JSONArray;
+import org.json.JSONObject;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
*
*/
@Override
- public void sendRequest(String service, String apiName, String parameter, String version)
+ public void sendRequest(final String service, final String apiName, final String parameter, final String version)
{
- String[] parameterItems = parameter.split(",");
+ final String[] parameterItems = parameter.split(",");
StringBuilder logBuilder = new StringBuilder();
logBuilder.append("sendRequest(");
logBuilder.append(version);
logBuilder.append(");");
Log.v(TAG, logBuilder.toString());
+
+ try
+ {
+ Thread thread = new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ try
+ {
+ // メッセージを送信する
+ JSONArray params = new JSONArray();
+ if (parameter.length() != 0)
+ {
+ for (int index = 0; index < parameterItems.length; index++)
+ {
+ params.put(parameterItems[index]);
+ }
+ }
+ receivedReply(interfaceProvider.getSonyInterface().getCameraApi().callGenericSonyApiMethod(service, apiName, params, version));
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ });
+ thread.start();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
}
@Override
{
Log.v(TAG, "cancelled()");
}
+
+
+ private void receivedReply(final JSONObject reply)
+ {
+ try
+ {
+ final Activity activity = getActivity();
+ if (activity != null)
+ {
+ activity.runOnUiThread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ try
+ {
+ ConfirmationDialog dialog = ConfirmationDialog.newInstance(getActivity());
+ dialog.show(android.R.drawable.ic_dialog_info, getString(R.string.dialog_title_reply), reply.getString("result"));
+ }
+ catch (Exception e)
+ {
+ ConfirmationDialog dialog = ConfirmationDialog.newInstance(getActivity());
+ dialog.show(android.R.drawable.ic_dialog_alert, getString(R.string.dialog_title_reply), "RECEIVE ERROR");
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+
}
{
// 確認ダイアログの生成と表示
- ConfirmationDialog dialog = new ConfirmationDialog(context);
+ ConfirmationDialog dialog = ConfirmationDialog.newInstance(context);
dialog.show(R.string.dialog_title_confirmation, R.string.dialog_message_exit_application, this);
return (true);
}
<string name="dialog_parameter_hint">(parameter)</string>
<string name="dialog_version_hint">1.0</string>
+ <string name="dialog_title_reply">応答</string>
<string name="only_opc_feature">OPCカメラでのみ有効です。</string>
<string name="camera_detected">発見 : </string>
<string name="dialog_parameter_hint">(parameter)</string>
<string name="dialog_version_hint">1.0</string>
+ <string name="dialog_title_reply">Reply</string>
<string name="only_opc_feature">This feature is only available for a OPC Camera.</string>
<string name="camera_detected">Detected : </string>